Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save eltomali/9b464803abff50f4a992db2e3c08c297 to your computer and use it in GitHub Desktop.
Save eltomali/9b464803abff50f4a992db2e3c08c297 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<a href=\"https://cognitiveclass.ai\"><img src = \"https://ibm.box.com/shared/static/9gegpsmnsoo25ikkbl4qzlvlyjbgxs5x.png\" width = 400> </a>\n",
"\n",
"<h1 align=center><font size = 5>Generating Maps with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Introduction\n",
"\n",
"In this lab, we will learn how to create maps for different objectives. To do that, we will part ways with Matplotlib and work with another Python visualization library, namely **Folium**. What is nice about **Folium** is that it was developed for the sole purpose of visualizing geospatial data. While other libraries are available to visualize geospatial data, such as **plotly**, they might have a cap on how many API calls you can make within a defined time frame. **Folium**, on the other hand, is completely free."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Table of Contents\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
"1. [Exploring Datasets with *p*andas](#0)<br>\n",
"2. [Downloading and Prepping Data](#2)<br>\n",
"3. [Introduction to Folium](#4) <br>\n",
"4. [Map with Markers](#6) <br>\n",
"5. [Choropleth Maps](#8) <br>\n",
"</div>\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Exploring Datasets with *pandas* and Matplotlib<a id=\"0\"></a>\n",
"\n",
"Toolkits: This lab heavily relies on [*pandas*](http://pandas.pydata.org/) and [**Numpy**](http://www.numpy.org/) for data wrangling, analysis, and visualization. The primary plotting library we will explore in this lab is [**Folium**](https://github.com/python-visualization/folium/).\n",
"\n",
"Datasets: \n",
"\n",
"1. San Francisco Police Department Incidents for the year 2016 - [Police Department Incidents](https://data.sfgov.org/Public-Safety/Police-Department-Incidents-Previous-Year-2016-/ritf-b9ki) from San Francisco public data portal. Incidents derived from San Francisco Police Department (SFPD) Crime Incident Reporting system. Updated daily, showing data for the entire year of 2016. Address and location has been anonymized by moving to mid-block or to an intersection. \n",
"\n",
"2. Immigration to Canada from 1980 to 2013 - [International migration flows to and from selected countries - The 2015 revision](http://www.un.org/en/development/desa/population/migration/data/empirical2/migrationflows.shtml) from United Nation's website. The dataset contains annual data on the flows of international migrants as recorded by the countries of destination. The data presents both inflows and outflows according to the place of birth, citizenship or place of previous / next residence both for foreigners and nationals. For this lesson, we will focus on the Canadian Immigration data"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Downloading and Prepping Data <a id=\"2\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Import Primary Modules:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"import numpy as np # useful for many scientific computing in Python\n",
"import pandas as pd # primary data structure library"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Introduction to Folium <a id=\"4\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Folium is a powerful Python library that helps you create several types of Leaflet maps. The fact that the Folium results are interactive makes this library very useful for dashboard building.\n",
"\n",
"From the official Folium documentation page:\n",
"\n",
"> Folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the Leaflet.js library. Manipulate your data in Python, then visualize it in on a Leaflet map via Folium.\n",
"\n",
"> Folium makes it easy to visualize data that's been manipulated in Python on an interactive Leaflet map. It enables both the binding of data to a map for choropleth visualizations as well as passing Vincent/Vega visualizations as markers on the map.\n",
"\n",
"> The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. Folium supports both GeoJSON and TopoJSON overlays, as well as the binding of data to those overlays to create choropleth maps with color-brewer color schemes."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Let's install **Folium**"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Folium** is not available by default. So, we first need to install it before we are able to import it."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting package metadata: done\n",
"Solving environment: | \n",
"The environment is inconsistent, please check the package plan carefully\n",
"The following packages are causing the inconsistency:\n",
"\n",
" - defaults/linux-64::anaconda==5.3.1=py37_0\n",
" - defaults/linux-64::astropy==3.0.4=py37h14c3975_0\n",
" - defaults/linux-64::bkcharts==0.2=py37_0\n",
" - defaults/linux-64::blaze==0.11.3=py37_0\n",
" - defaults/linux-64::bokeh==0.13.0=py37_0\n",
" - defaults/linux-64::bottleneck==1.2.1=py37h035aef0_1\n",
" - defaults/linux-64::dask==0.19.1=py37_0\n",
" - defaults/linux-64::datashape==0.5.4=py37_1\n",
" - defaults/linux-64::mkl-service==1.1.2=py37h90e4bf4_5\n",
" - defaults/linux-64::numba==0.39.0=py37h04863e7_0\n",
" - defaults/linux-64::numexpr==2.6.8=py37hd89afb7_0\n",
" - defaults/linux-64::odo==0.5.1=py37_0\n",
" - defaults/linux-64::pytables==3.4.4=py37ha205bf6_0\n",
" - defaults/linux-64::pytest-arraydiff==0.2=py37h39e3cac_0\n",
" - defaults/linux-64::pytest-astropy==0.4.0=py37_0\n",
" - defaults/linux-64::pytest-doctestplus==0.1.3=py37_0\n",
" - defaults/linux-64::pywavelets==1.0.0=py37hdd07704_0\n",
" - defaults/linux-64::scikit-image==0.14.0=py37hf484d3e_1\n",
"done\n",
"\n",
"# All requested packages already installed.\n",
"\n",
"Folium installed and imported!\n"
]
}
],
"source": [
"!conda install -c conda-forge folium=0.5.0 --yes\n",
"import folium\n",
"\n",
"print('Folium installed and imported!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Generating the world map is straigtforward in **Folium**. You simply create a **Folium** *Map* object and then you display it. What is attactive about **Folium** maps is that they are interactive, so you can zoom into any region of interest despite the initial zoom level. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZTJjZjE0NDcwYzA0NGU1MGI3NmQ5NGE3MTdiZDZkMWYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2UyY2YxNDQ3MGMwNDRlNTBiNzZkOTRhNzE3YmQ2ZDFmIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9lMmNmMTQ0NzBjMDQ0ZTUwYjc2ZDk0YTcxN2JkNmQxZiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9lMmNmMTQ0NzBjMDQ0ZTUwYjc2ZDk0YTcxN2JkNmQxZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzJlZTZjN2M3NGI2OTQ0NWY4NDQ0MWU4NjFkNzI1YjliID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2UyY2YxNDQ3MGMwNDRlNTBiNzZkOTRhNzE3YmQ2ZDFmKTsKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb0020b8438>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map\n",
"world_map = folium.Map()\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Go ahead. Try zooming in and out of the rendered map above."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can customize this default definition of the world map by specifying the centre of your map and the intial zoom level. \n",
"\n",
"All locations on a map are defined by their respective *Latitude* and *Longitude* values. So you can create a map and pass in a center of *Latitude* and *Longitude* values of **[0, 0]**. \n",
"\n",
"For a defined center, you can also define the intial zoom level into that location when the map is rendered. **The higher the zoom level the more the map is zoomed into the center**.\n",
"\n",
"Let's create a map centered around Canada and play with the zoom level to see how it affects the rendered map."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZDIzNDY1MzNkNDFkNGE4ZTkzNjA2NTljMDU3MmJjOWUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2QyMzQ2NTMzZDQxZDRhOGU5MzYwNjU5YzA1NzJiYzllIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kMjM0NjUzM2Q0MWQ0YThlOTM2MDY1OWMwNTcyYmM5ZSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kMjM0NjUzM2Q0MWQ0YThlOTM2MDY1OWMwNTcyYmM5ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl81MzBmNjc5NTY1ZDA0YTgyODdiMGQ4ZTViNjhlY2IxMCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9kMjM0NjUzM2Q0MWQ0YThlOTM2MDY1OWMwNTcyYmM5ZSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000dffa90>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a low zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create the map again with a higher zoom level"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfOTkxNmMwZWM5ODdhNGRmNmJmMDJkM2QyNjQxNmUxMjQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzk5MTZjMGVjOTg3YTRkZjZiZjAyZDNkMjY0MTZlMTI0IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF85OTE2YzBlYzk4N2E0ZGY2YmYwMmQzZDI2NDE2ZTEyNCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF85OTE2YzBlYzk4N2E0ZGY2YmYwMmQzZDI2NDE2ZTEyNCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8zODU1MTNhMjdkYzM0MzQxOWZlOWJhNTM0MDAyZGEyYyA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85OTE2YzBlYzk4N2E0ZGY2YmYwMmQzZDI2NDE2ZTEyNCk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000e00e48>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a higher zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=8)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"As you can see, the higher the zoom level the more the map is zoomed into the given center."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZTUxMzMzZjk2YmYzNDI0NmEyNWJiOGE3ZmJmOTM4YmYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2U1MTMzM2Y5NmJmMzQyNDZhMjViYjhhN2ZiZjkzOGJmIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9lNTEzMzNmOTZiZjM0MjQ2YTI1YmI4YTdmYmY5MzhiZiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9lNTEzMzNmOTZiZjM0MjQ2YTI1YmI4YTdmYmY5MzhiZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjY1MDRkOTJhN2JiNDBjOWEyYjg3ODlmNDkyNWJhZjAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZTUxMzMzZjk2YmYzNDI0NmEyNWJiOGE3ZmJmOTM4YmYpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000d8df60>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"world_map_mex = folium.Map(location=[23.6345, -102.5528], zoom_start=4)\n",
"\n",
"world_map_mex\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=4)\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Another cool feature of **Folium** is that you can generate different map styles."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### A. Stamen Toner Maps\n",
"\n",
"These are high-contrast B+W (black and white) maps. They are perfect for data mashups and exploring river meanders and coastal zones. "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Toner map of canada with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfODRmMWJkZmY5OWQyNGQ4ZGJlMGU5ZGNiYTUyNDc0YTAgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzg0ZjFiZGZmOTlkMjRkOGRiZTBlOWRjYmE1MjQ3NGEwIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF84NGYxYmRmZjk5ZDI0ZDhkYmUwZTlkY2JhNTI0NzRhMCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF84NGYxYmRmZjk5ZDI0ZDhkYmUwZTlkY2JhNTI0NzRhMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9mZDA2NTgxMTgwNWY0OTI3YjdjNTA0MTc0N2UzOWYxNiA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfODRmMWJkZmY5OWQyNGQ4ZGJlMGU5ZGNiYTUyNDc0YTApOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000d19ef0>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4, tiles='Stamen Toner')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to the default one."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### B. Stamen Terrain Maps\n",
"\n",
"These are maps that feature hill shading and natural vegetation colors. They showcase advanced labeling and linework generalization of dual-carriageway roads."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Terrain map of Canada with zoom level 4."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZGEyODgzZTZmZmJmNDU4MjljZTEzNzgyZDM5M2E4YTIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2RhMjg4M2U2ZmZiZjQ1ODI5Y2UxMzc4MmQzOTNhOGEyIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kYTI4ODNlNmZmYmY0NTgyOWNlMTM3ODJkMzkzYThhMiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kYTI4ODNlNmZmYmY0NTgyOWNlMTM3ODJkMzkzYThhMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8xZWY0N2U0YTkyZDc0ZmU1YjQ0MTEwYTM1ZWZkNDA1OSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RlcnJhaW4ve3p9L3t4fS97eX0uanBnJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9kYTI4ODNlNmZmYmY0NTgyOWNlMTM3ODJkMzkzYThhMik7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000d1b978>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4, tiles='Stamen Terrain')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to Stamen Toner and the default style."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### C. Mapbox Bright Maps\n",
"\n",
"These are maps that quite similar to the default style, except that the borders are not visible with a low zoom level. Furthermore, unlike the default style where country names are displayed in each country's native language, *Mapbox Bright* style displays all country names in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a world map with this style."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZGRkNDdkNGZiNTNlNGEzZmJlMzQzNjVlNzI0ZjU5YWIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2RkZDQ3ZDRmYjUzZTRhM2ZiZTM0MzY1ZTcyNGY1OWFiIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kZGQ0N2Q0ZmI1M2U0YTNmYmUzNDM2NWU3MjRmNTlhYiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kZGQ0N2Q0ZmI1M2U0YTNmYmUzNDM2NWU3MjRmNTlhYicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyX2U4ZDMyOWM4MjY4ZjRjNTFiMmUwMTY4MDk5YzYxZWM0ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZXMubWFwYm94LmNvbS92My9tYXBib3gud29ybGQtYnJpZ2h0L3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZGRkNDdkNGZiNTNlNGEzZmJlMzQzNjVlNzI0ZjU5YWIpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000dfa978>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a world map with a Mapbox Bright style.\n",
"world_map = folium.Map(tiles='Mapbox Bright')\n",
"\n",
"# display the map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Zoom in and notice how the borders start showing as you zoom in, and the displayed country names are in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico to visualize its hill shading and natural vegetation. Use a zoom level of 6."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYTk2NmM3MDc2NTIyNGMwMzhhM2ZhY2EwMzA1YmFkM2UgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2E5NjZjNzA3NjUyMjRjMDM4YTNmYWNhMDMwNWJhZDNlIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9hOTY2YzcwNzY1MjI0YzAzOGEzZmFjYTAzMDViYWQzZSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9hOTY2YzcwNzY1MjI0YzAzOGEzZmFjYTAzMDViYWQzZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZDc4MzJlMjcyYTliNDAyN2ExNDEwN2I1OWI4ZWQwY2EgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90ZXJyYWluL3t6fS97eH0ve3l9LmpwZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTk2NmM3MDc2NTIyNGMwMzhhM2ZhY2EwMzA1YmFkM2UpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000d4e198>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"mexico_map = folium.Map(location = [23.6345, -102.5528], zoom_start=6, tiles='Stamen Terrain')\n",
"\n",
"mexico_map\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=6, tiles='Stamen Terrain')\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Maps with Markers <a id=\"6\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's download and import the data on police department incidents using *pandas* `read_csv()` method."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset downloaded and read into a pandas dataframe!\n"
]
}
],
"source": [
"df_incidents = pd.read_csv('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Police_Department_Incidents_-_Previous_Year__2016_.csv')\n",
"\n",
"print('Dataset downloaded and read into a pandas dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>IncidntNum</th>\n",
" <th>Category</th>\n",
" <th>Descript</th>\n",
" <th>DayOfWeek</th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>PdDistrict</th>\n",
" <th>Resolution</th>\n",
" <th>Address</th>\n",
" <th>X</th>\n",
" <th>Y</th>\n",
" <th>Location</th>\n",
" <th>PdId</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>POSS OF PROHIBITED WEAPON</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212120</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212168</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>141059263</td>\n",
" <td>WARRANTS</td>\n",
" <td>WARRANT ARREST</td>\n",
" <td>Monday</td>\n",
" <td>04/25/2016 12:00:00 AM</td>\n",
" <td>14:59</td>\n",
" <td>BAYVIEW</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>KEITH ST / SHAFTER AV</td>\n",
" <td>-122.388856</td>\n",
" <td>37.729981</td>\n",
" <td>(37.7299809672996, -122.388856204292)</td>\n",
" <td>14105926363010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>160013662</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Tuesday</td>\n",
" <td>01/05/2016 12:00:00 AM</td>\n",
" <td>23:50</td>\n",
" <td>TENDERLOIN</td>\n",
" <td>NONE</td>\n",
" <td>JONES ST / OFARRELL ST</td>\n",
" <td>-122.412971</td>\n",
" <td>37.785788</td>\n",
" <td>(37.7857883766888, -122.412970537591)</td>\n",
" <td>16001366271000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>160002740</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Friday</td>\n",
" <td>01/01/2016 12:00:00 AM</td>\n",
" <td>00:30</td>\n",
" <td>MISSION</td>\n",
" <td>NONE</td>\n",
" <td>16TH ST / MISSION ST</td>\n",
" <td>-122.419672</td>\n",
" <td>37.765050</td>\n",
" <td>(37.7650501214668, -122.419671780296)</td>\n",
" <td>16000274071000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" IncidntNum Category Descript \\\n",
"0 120058272 WEAPON LAWS POSS OF PROHIBITED WEAPON \n",
"1 120058272 WEAPON LAWS FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE \n",
"2 141059263 WARRANTS WARRANT ARREST \n",
"3 160013662 NON-CRIMINAL LOST PROPERTY \n",
"4 160002740 NON-CRIMINAL LOST PROPERTY \n",
"\n",
" DayOfWeek Date Time PdDistrict Resolution \\\n",
"0 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"1 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"2 Monday 04/25/2016 12:00:00 AM 14:59 BAYVIEW ARREST, BOOKED \n",
"3 Tuesday 01/05/2016 12:00:00 AM 23:50 TENDERLOIN NONE \n",
"4 Friday 01/01/2016 12:00:00 AM 00:30 MISSION NONE \n",
"\n",
" Address X Y \\\n",
"0 800 Block of BRYANT ST -122.403405 37.775421 \n",
"1 800 Block of BRYANT ST -122.403405 37.775421 \n",
"2 KEITH ST / SHAFTER AV -122.388856 37.729981 \n",
"3 JONES ST / OFARRELL ST -122.412971 37.785788 \n",
"4 16TH ST / MISSION ST -122.419672 37.765050 \n",
"\n",
" Location PdId \n",
"0 (37.775420706711, -122.403404791479) 12005827212120 \n",
"1 (37.775420706711, -122.403404791479) 12005827212168 \n",
"2 (37.7299809672996, -122.388856204292) 14105926363010 \n",
"3 (37.7857883766888, -122.412970537591) 16001366271000 \n",
"4 (37.7650501214668, -122.419671780296) 16000274071000 "
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So each row consists of 13 features:\n",
"> 1. **IncidntNum**: Incident Number\n",
"> 2. **Category**: Category of crime or incident\n",
"> 3. **Descript**: Description of the crime or incident\n",
"> 4. **DayOfWeek**: The day of week on which the incident occurred\n",
"> 5. **Date**: The Date on which the incident occurred\n",
"> 6. **Time**: The time of day on which the incident occurred\n",
"> 7. **PdDistrict**: The police department district\n",
"> 8. **Resolution**: The resolution of the crime in terms whether the perpetrator was arrested or not\n",
"> 9. **Address**: The closest address to where the incident took place\n",
"> 10. **X**: The longitude value of the crime location \n",
"> 11. **Y**: The latitude value of the crime location\n",
"> 12. **Location**: A tuple of the latitude and the longitude values\n",
"> 13. **PdId**: The police department ID"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(150500, 13)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So the dataframe consists of 150,500 crimes, which took place in the year 2016. In order to reduce computational cost, let's just work with the first 100 incidents in this dataset."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# get the first 100 crimes in the df_incidents dataframe\n",
"limit = 100\n",
"df_incidents = df_incidents.iloc[0:limit, :]"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's confirm that our dataframe now consists only of 100 crimes."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(100, 13)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we reduced the data a little bit, let's visualize where these crimes took place in the city of San Francisco. We will use the default style and we will initialize the zoom level to 12. "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# San Francisco latitude and longitude values\n",
"latitude = 37.77\n",
"longitude = -122.42"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2MyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2MycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjIzNTdhNDQ4YmRkNDRiODllNjUyZDM5YjVjMzQyYzAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000035a20>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# display the map of San Francisco\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's superimpose the locations of the crimes onto the map. The way to do that in **Folium** is to create a *feature group* with its own features and style and then add it to the sanfran_map."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2MyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2MycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjIzNTdhNDQ4YmRkNDRiODllNjUyZDM5YjVjMzQyYzAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjZmYTFlODRkMDU3NDZjNDk3OTdmYzk5OTEwMDNhNWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmNWI1ZDE5MGNlNzQzMzU5MjIyZWEzNjdmY2ZlZjhlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZTVjMmQyNjQ2NzI0NDdlYWE5YmRiYmJlNzE4MWZjNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UxZmVlMTM1ZjMzODRlNjc4MjlhOWI1YzNhNzFiODY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NGY2MWI3OTFlNDE0YzNiOWVkYWVmMzdjNmYxZTQwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZWVhYjVjYTIyOWU0MjRkYTBjMTNjY2ZjNThiOTdhZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjRkNDNmNGRjMzRmNDdmMzkyYTA1NmQ0NTVlNTIwODYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWU0ZmNhZWIwMjdhNDMzMGE4NjY2YTVlMzU0MDY2ODggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTVmYmJhMmYwYmI4NGEwNjljNzJiODgwOWE2MjM0ZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81OTllMjg4NGU3Yjc0NzNmODNiY2IxNjJhYzI1ZDA1NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZTM1NzAyODQwNmQ0MDNkODY3NmJlNjk4NTJjZDk5YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODMzNGYwNGZjMGFiNGFjZDk1MjU1MTk1NDJjYzkyMTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYTEzZTk1MmQyM2Q0N2E3OWEyN2U4MzViZmM3ZWU5NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzA5ZjJkMDQwNzQzNDI5YTkwNjYzMTQ3NzIzZjYwNWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTRiNGJhY2ExMjlhNDQyMjgwYmQyZjhkZDBmYmMzZjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3ZWEwYzg3MTY2ZTQ2ZDliNGZlODIzOTczMjc5MjljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJjNDg3MTFhNmY5MDRhMDZhYTQzZmVjMDU0YjgwODA3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWZmMTViYzJkNTc0NDc0Y2JlNDI0N2NjOGE2YTI3OGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NTUwOGE3YjAwZmY0YWJiYWE2ZDY3NTdjMDNhOGJkNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAxZTZkMTY2ODM5OTQ0MGM4OWIyNWUzNWI1MTFkZDZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg4MDdkNWYyNDVhYjQxZTBiZmNkZGFlOGU4NWU1YzcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTNmN2EyYjYyNzUwNDNhYWJmNGU4MmNmMGVhNGVkMmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E0OTE3NmMwMTQxNTQ5NmViNTFiNzM4MTIyZGQwOGI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOThiZTEwMTI0OWI0OGI5ODg1MDQzOTUwNzg2NDgyNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTMxYWFjMDgyZGZlNGZjYjhlNzg5NjZmOWFiYjFhNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMjljZjFiNjFkNDE0ZDgyYTUxNmI4MWE4OTllZWYzMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTM3MzExNGU0NmEwNDFiMjllMTZkZmNmZjk4NzU3YmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTE3Yjc5NWZjODdjNDllYThjMGNmMTI3NzcyYTVjNGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2FhYzdhODgyMTBhNDZhM2E3MThjOTA3ZjM5ZjRiN2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MGU1YWE1ZDMzYTg0NjJiYjgyYzg0ZjI2NzY5ODk5MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZTlhMDg2M2UxNWQ0MjdmODI0YWNhMGNjYmNlZDEzYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA0YjRmYWE5ZTQ1YzQ0MzE5OTg1OGFkZTM1ZDczYmYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlmMzU3YzI4NWQ4YjRmZDU4MGY5ZmEyYzE3YWZmMWQ5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmZGQ0NjBmOGVkZTRlMGE4NmYxMzcyMWIxM2I1MWViID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1NjEwMzIwNDMzOTQ3YjY5ODNiZjg5Zjc2YWUyMmNlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWEyZDc4NGE3NDgwNDZlMWFkMmVkYzVkYzYzOTVmMjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGYxMDI0YjRkMjk0ZThmYTdhNjNkZTY3NjdiNWFlMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyNzQ0MTI5YjkyNDQ4ZGNhZjQ2NjgyZTVmNzQ5NjU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZhYjg4MTNlODVlMzQ2OWRhYWQyMmE3Y2RkMTc2NGI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWY4MDkyMjcxNTE5NGFkN2I4NzRlNjNhZDQ3NTU3YzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81YTg0ZDBkZmQwYzE0OTc2OTY1YWYyZTI5NDFiNjRjZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMDk4ZjM0OGNkOGM0MjllOThjYmY5YmY1NTY1ZjJkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZWFiNmIwY2NkY2E0MzBkODI2Yjg5YmUzMGFkMjNhNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNTI3ZDQ2MmY0MWU0ZjA3ODMwZWNmZGE4M2RlOGExNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzc4ZTU0ZGUxZGExNDJiZGEwYTM1ZDc3NzZhODM4N2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMTFkYTZiNzZlYjE0OTNkYmMzODcxZmRjYWZlM2E5MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NkZDEyMGZiYjBiZDQ3N2Q4MzUyOGFkZjBjYTIwNzg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZiYTBmYzdkYWJhMTRlNzdiYzc4ZjQ2ZjQxYjQwMjZmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzMzU1NWU0NjI4ODRiMjg5OTFlMzBkOThlYTcxZTI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I2NjA5YjE1Y2YzMTQ3ZjE5MTY1OWI1ZmI1NWZhYjM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NiM2IyOGIzYTlmNTRmNWFiMDBhZjI3YmNiNTExNDAwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDU0NDcxN2RmNWJjNDQ3YzllMjQ0ZTExNTQ5Nzk3NDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MDI4NTFlZWRkODU0MDFhODcyYzg5ODlmMzVjMDgzZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNzM2ZmI0ZDZkMWI0ODNjODQxNjJlNjMyZGNmNDM4NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYmY5NWYwZGY3MDM0ODg4ODM0NmQ4NGY1NmM0YTFmZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM1ZDQxODBjNGFjNzRjOWJiMjAyZTI0MDA1Y2QwYjc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U5MjVkZjAzZTNhMDRlMTM5NDZlNDg4NzFlMjkwNjgxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTVlYmQ5MjcwMmI0NDk3M2I2ZDI4ZGI0MGJmNmMyMzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjYwNmFmZjlmMjBhNDAwNWFkNmQ3YWRjYzdjODYzNDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UzY2UyZDQyMThmNzRhMTA5NjFlMDgwYTczMjk5NmVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ODY5MjBkOGJmZWM0ZTE3ODcxZTcxZGM3MDFhMDJkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWI4NzcwYjNiNDAxNGQzZmIxYjU1MzA5MTRkODU0M2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNlZTEzMjU4NGU0NDE0NmFhOGI4YzZhNWRiYzI3ZjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDM3NzRjOGEyMmM3NDIxZTgxMTUyNmM0MTA5NDkyNTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTgxNDBkZmY5MmJhNDg2OWE3NTg2ZDU2NTY2YjU5MmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTMzMjNjY2M4MjAwNDdkZjllYWFmZDJkNzU5OTRiNDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MGM5ZGU2ZDhjNjc0OTYyYWIzZjE5ZjA4NjhjYjIyZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MWRmYWNkYWMzOWY0NDQ1YTQxMWYyMDE4ZjIxNGExYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVlZjRkOWYyOGUzODQyZjg4ZjlkYTM4Y2Q1YTJhMzA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhYTU2NWJhYjc1MzQwODU4ZTIxODBlM2UxOGMwMmFhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkMTkwMzEzZjk1YjQzZjViOWU3YWEyZWI0OGM5NDUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YTBiYjc5ODE5NWQ0YWRmOGJjYTg5NjY5NmU3MDE1ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTFmYmQyMDcwNmY3NDY4YzgxNjJjM2FlNTIyMTEzNDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlNzAxNjc5ZTVjZjQ0NWQ5ZjdmNTJmOTIwYjI3NGIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTIxZTU3YWJiMzY4NGMzOWJmZDI3ZmNmY2Y2ODNiZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTExYWQ1YjYxZDEyNDg0YmJkYjkwN2EzYmRhMDFlYzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNWEzYTY3YjY1ZTE0MTMwYjk3NDIzZDI3N2NiZmJiNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjFkMTAyYWQyMjM3NDBjM2E5ZmYzNDZiNzA4MjE0YjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4ODZhYWUzMmFmMTRkMmM4ZDQzOWQ5YWY5MDJkMGM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NGQyOWZjODI5ZTY0OTliODI3M2MwNzQxYzYxMjM5YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNhN2Y1MzI4NjNkNjQ3YTdhZmQzODZlNDUwYmQ0MmVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1YzE1M2I5ZGZjYjQ5MTlhNTE5N2QzZGFhNzI2YmFkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4YzcyNzY5Y2I4NjRmMzVhMDQ4Y2FmMTU1ZGMwYTQ5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGNiZDEwMmQxOTM0MmE3YTk2NmU2MDg0MTM1NzZjZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBiYWMyOGY4MzBhMDQ1MTU5ZGJlMWY1YjM4NTQwMjcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdhNWRhMDdlMjQ4NjQ4MTRiYjZmYjcyYTZiMmRmYTEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4ODFiMmNiMjBmZDRkZDdiYjRlZTA2YjA2NmM5NjRjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80OTEzOWFiYmM5YzU0ZTZjOTQ2ZTkzN2M5NThhYWNlZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYTUzOTVmNDVjMGU0NjQzODFmOGQ1MTY2ZmNmMDNjOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg5YTE4MDAzOTI1NTQ0ZWViMTUyZmU2MDM5ZmNjNDc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODcxZWNjMGUxMmI0NGUzN2FjNGNiMjY1NzM1YWY5NjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNGEwMGRiNTZhNjM0NTk2YTJlZjJmMDQ3MThkZjI5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZjNzk0YzAzZTc1NjQwM2M5YmZjNzUxOTk5ZDgxMWEwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmNhNDM3OTM3ZDMwNDM0MThkMGI5ZjU0OWJjODQzOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZDdlOTg0NGM4ZGQ0NjAyYWZlODI3MjQ3MDI5YmIzNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YjFlOTIwNzZjZWI0NmUzOWM3Zjc2YzAwZThhYmYxMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZmYzQxN2I5MDBmMjQ5YzliM2UzYzJmODAxMWI4ZmY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjJjYzQ5ZTJjMjg5NDc0YzhmMTI1OWVmZTUxMWEyNzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGY0YTllMDQ5YjI2NGE5OGI3MThkN2M4YzRiMDlhN2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTRmNjEyMzM2YzI4NDJjM2I4MmNjNjc2MDAwZmEzZTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000035a20>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can also add some pop-up text that would get displayed when you hover over a marker. Let's make each marker display the category of the crime when hovered over."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2MyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2MycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjIzNTdhNDQ4YmRkNDRiODllNjUyZDM5YjVjMzQyYzAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjZmYTFlODRkMDU3NDZjNDk3OTdmYzk5OTEwMDNhNWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmNWI1ZDE5MGNlNzQzMzU5MjIyZWEzNjdmY2ZlZjhlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZTVjMmQyNjQ2NzI0NDdlYWE5YmRiYmJlNzE4MWZjNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UxZmVlMTM1ZjMzODRlNjc4MjlhOWI1YzNhNzFiODY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NGY2MWI3OTFlNDE0YzNiOWVkYWVmMzdjNmYxZTQwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZWVhYjVjYTIyOWU0MjRkYTBjMTNjY2ZjNThiOTdhZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjRkNDNmNGRjMzRmNDdmMzkyYTA1NmQ0NTVlNTIwODYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWU0ZmNhZWIwMjdhNDMzMGE4NjY2YTVlMzU0MDY2ODggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTVmYmJhMmYwYmI4NGEwNjljNzJiODgwOWE2MjM0ZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81OTllMjg4NGU3Yjc0NzNmODNiY2IxNjJhYzI1ZDA1NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZTM1NzAyODQwNmQ0MDNkODY3NmJlNjk4NTJjZDk5YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODMzNGYwNGZjMGFiNGFjZDk1MjU1MTk1NDJjYzkyMTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYTEzZTk1MmQyM2Q0N2E3OWEyN2U4MzViZmM3ZWU5NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzA5ZjJkMDQwNzQzNDI5YTkwNjYzMTQ3NzIzZjYwNWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTRiNGJhY2ExMjlhNDQyMjgwYmQyZjhkZDBmYmMzZjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3ZWEwYzg3MTY2ZTQ2ZDliNGZlODIzOTczMjc5MjljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJjNDg3MTFhNmY5MDRhMDZhYTQzZmVjMDU0YjgwODA3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWZmMTViYzJkNTc0NDc0Y2JlNDI0N2NjOGE2YTI3OGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NTUwOGE3YjAwZmY0YWJiYWE2ZDY3NTdjMDNhOGJkNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAxZTZkMTY2ODM5OTQ0MGM4OWIyNWUzNWI1MTFkZDZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg4MDdkNWYyNDVhYjQxZTBiZmNkZGFlOGU4NWU1YzcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTNmN2EyYjYyNzUwNDNhYWJmNGU4MmNmMGVhNGVkMmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E0OTE3NmMwMTQxNTQ5NmViNTFiNzM4MTIyZGQwOGI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOThiZTEwMTI0OWI0OGI5ODg1MDQzOTUwNzg2NDgyNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTMxYWFjMDgyZGZlNGZjYjhlNzg5NjZmOWFiYjFhNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMjljZjFiNjFkNDE0ZDgyYTUxNmI4MWE4OTllZWYzMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTM3MzExNGU0NmEwNDFiMjllMTZkZmNmZjk4NzU3YmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTE3Yjc5NWZjODdjNDllYThjMGNmMTI3NzcyYTVjNGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2FhYzdhODgyMTBhNDZhM2E3MThjOTA3ZjM5ZjRiN2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MGU1YWE1ZDMzYTg0NjJiYjgyYzg0ZjI2NzY5ODk5MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZTlhMDg2M2UxNWQ0MjdmODI0YWNhMGNjYmNlZDEzYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA0YjRmYWE5ZTQ1YzQ0MzE5OTg1OGFkZTM1ZDczYmYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlmMzU3YzI4NWQ4YjRmZDU4MGY5ZmEyYzE3YWZmMWQ5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmZGQ0NjBmOGVkZTRlMGE4NmYxMzcyMWIxM2I1MWViID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1NjEwMzIwNDMzOTQ3YjY5ODNiZjg5Zjc2YWUyMmNlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWEyZDc4NGE3NDgwNDZlMWFkMmVkYzVkYzYzOTVmMjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGYxMDI0YjRkMjk0ZThmYTdhNjNkZTY3NjdiNWFlMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyNzQ0MTI5YjkyNDQ4ZGNhZjQ2NjgyZTVmNzQ5NjU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZhYjg4MTNlODVlMzQ2OWRhYWQyMmE3Y2RkMTc2NGI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWY4MDkyMjcxNTE5NGFkN2I4NzRlNjNhZDQ3NTU3YzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81YTg0ZDBkZmQwYzE0OTc2OTY1YWYyZTI5NDFiNjRjZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMDk4ZjM0OGNkOGM0MjllOThjYmY5YmY1NTY1ZjJkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZWFiNmIwY2NkY2E0MzBkODI2Yjg5YmUzMGFkMjNhNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNTI3ZDQ2MmY0MWU0ZjA3ODMwZWNmZGE4M2RlOGExNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzc4ZTU0ZGUxZGExNDJiZGEwYTM1ZDc3NzZhODM4N2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMTFkYTZiNzZlYjE0OTNkYmMzODcxZmRjYWZlM2E5MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NkZDEyMGZiYjBiZDQ3N2Q4MzUyOGFkZjBjYTIwNzg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZiYTBmYzdkYWJhMTRlNzdiYzc4ZjQ2ZjQxYjQwMjZmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzMzU1NWU0NjI4ODRiMjg5OTFlMzBkOThlYTcxZTI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I2NjA5YjE1Y2YzMTQ3ZjE5MTY1OWI1ZmI1NWZhYjM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NiM2IyOGIzYTlmNTRmNWFiMDBhZjI3YmNiNTExNDAwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDU0NDcxN2RmNWJjNDQ3YzllMjQ0ZTExNTQ5Nzk3NDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MDI4NTFlZWRkODU0MDFhODcyYzg5ODlmMzVjMDgzZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNzM2ZmI0ZDZkMWI0ODNjODQxNjJlNjMyZGNmNDM4NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYmY5NWYwZGY3MDM0ODg4ODM0NmQ4NGY1NmM0YTFmZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM1ZDQxODBjNGFjNzRjOWJiMjAyZTI0MDA1Y2QwYjc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U5MjVkZjAzZTNhMDRlMTM5NDZlNDg4NzFlMjkwNjgxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTVlYmQ5MjcwMmI0NDk3M2I2ZDI4ZGI0MGJmNmMyMzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjYwNmFmZjlmMjBhNDAwNWFkNmQ3YWRjYzdjODYzNDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UzY2UyZDQyMThmNzRhMTA5NjFlMDgwYTczMjk5NmVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ODY5MjBkOGJmZWM0ZTE3ODcxZTcxZGM3MDFhMDJkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWI4NzcwYjNiNDAxNGQzZmIxYjU1MzA5MTRkODU0M2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNlZTEzMjU4NGU0NDE0NmFhOGI4YzZhNWRiYzI3ZjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDM3NzRjOGEyMmM3NDIxZTgxMTUyNmM0MTA5NDkyNTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTgxNDBkZmY5MmJhNDg2OWE3NTg2ZDU2NTY2YjU5MmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTMzMjNjY2M4MjAwNDdkZjllYWFmZDJkNzU5OTRiNDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MGM5ZGU2ZDhjNjc0OTYyYWIzZjE5ZjA4NjhjYjIyZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MWRmYWNkYWMzOWY0NDQ1YTQxMWYyMDE4ZjIxNGExYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVlZjRkOWYyOGUzODQyZjg4ZjlkYTM4Y2Q1YTJhMzA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhYTU2NWJhYjc1MzQwODU4ZTIxODBlM2UxOGMwMmFhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkMTkwMzEzZjk1YjQzZjViOWU3YWEyZWI0OGM5NDUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YTBiYjc5ODE5NWQ0YWRmOGJjYTg5NjY5NmU3MDE1ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTFmYmQyMDcwNmY3NDY4YzgxNjJjM2FlNTIyMTEzNDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlNzAxNjc5ZTVjZjQ0NWQ5ZjdmNTJmOTIwYjI3NGIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTIxZTU3YWJiMzY4NGMzOWJmZDI3ZmNmY2Y2ODNiZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTExYWQ1YjYxZDEyNDg0YmJkYjkwN2EzYmRhMDFlYzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNWEzYTY3YjY1ZTE0MTMwYjk3NDIzZDI3N2NiZmJiNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjFkMTAyYWQyMjM3NDBjM2E5ZmYzNDZiNzA4MjE0YjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4ODZhYWUzMmFmMTRkMmM4ZDQzOWQ5YWY5MDJkMGM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NGQyOWZjODI5ZTY0OTliODI3M2MwNzQxYzYxMjM5YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNhN2Y1MzI4NjNkNjQ3YTdhZmQzODZlNDUwYmQ0MmVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1YzE1M2I5ZGZjYjQ5MTlhNTE5N2QzZGFhNzI2YmFkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4YzcyNzY5Y2I4NjRmMzVhMDQ4Y2FmMTU1ZGMwYTQ5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGNiZDEwMmQxOTM0MmE3YTk2NmU2MDg0MTM1NzZjZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBiYWMyOGY4MzBhMDQ1MTU5ZGJlMWY1YjM4NTQwMjcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdhNWRhMDdlMjQ4NjQ4MTRiYjZmYjcyYTZiMmRmYTEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4ODFiMmNiMjBmZDRkZDdiYjRlZTA2YjA2NmM5NjRjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80OTEzOWFiYmM5YzU0ZTZjOTQ2ZTkzN2M5NThhYWNlZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYTUzOTVmNDVjMGU0NjQzODFmOGQ1MTY2ZmNmMDNjOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg5YTE4MDAzOTI1NTQ0ZWViMTUyZmU2MDM5ZmNjNDc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODcxZWNjMGUxMmI0NGUzN2FjNGNiMjY1NzM1YWY5NjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNGEwMGRiNTZhNjM0NTk2YTJlZjJmMDQ3MThkZjI5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZjNzk0YzAzZTc1NjQwM2M5YmZjNzUxOTk5ZDgxMWEwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmNhNDM3OTM3ZDMwNDM0MThkMGI5ZjU0OWJjODQzOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZDdlOTg0NGM4ZGQ0NjAyYWZlODI3MjQ3MDI5YmIzNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YjFlOTIwNzZjZWI0NmUzOWM3Zjc2YzAwZThhYmYxMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYTM0NDY1NDIzMTI0NTdiODNlOGU3Y2ViZDhlZmY0Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZmYzQxN2I5MDBmMjQ5YzliM2UzYzJmODAxMWI4ZmY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjJjYzQ5ZTJjMjg5NDc0YzhmMTI1OWVmZTUxMWEyNzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGY0YTllMDQ5YjI2NGE5OGI3MThkN2M4YzRiMDlhN2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RhMzQ0NjU0MjMxMjQ1N2I4M2U4ZTdjZWJkOGVmZjQ2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTRmNjEyMzM2YzI4NDJjM2I4MmNjNjc2MDAwZmEzZTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZGEzNDQ2NTQyMzEyNDU3YjgzZThlN2NlYmQ4ZWZmNDYpOwogICAgICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yOWJlZmEyNTQ0ODE0YjE1YjBmMWQ3YTBkN2FjZDJkZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzlhOTg2N2MwNzdjNDRiOWE0MWY3MjRmOGU2YThjNjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjgyY2RhZjAxYzZkNGFkYjg5MGMyMDNmMDYxYTljZGIgPSAkKCc8ZGl2IGlkPSJodG1sXzI4MmNkYWYwMWM2ZDRhZGI4OTBjMjAzZjA2MWE5Y2RiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XRUFQT04gTEFXUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzlhOTg2N2MwNzdjNDRiOWE0MWY3MjRmOGU2YThjNjUuc2V0Q29udGVudChodG1sXzI4MmNkYWYwMWM2ZDRhZGI4OTBjMjAzZjA2MWE5Y2RiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjliZWZhMjU0NDgxNGIxNWIwZjFkN2EwZDdhY2QyZGYuYmluZFBvcHVwKHBvcHVwX2M5YTk4NjdjMDc3YzQ0YjlhNDFmNzI0ZjhlNmE4YzY1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIzMzRlZjFlYmQ5NzRlOTdiY2E1ZTA2ZmE1ZjVkYTRhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOGE3MWQwODc3ZTY0ZjQ1OWM3OWM5ZjYyYmQ0M2I4OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMjdkN2VhMDgxMDE0YTYzOGZhNGVlMzk2M2UxNWJiOSA9ICQoJzxkaXYgaWQ9Imh0bWxfYzI3ZDdlYTA4MTAxNGE2MzhmYTRlZTM5NjNlMTViYjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOGE3MWQwODc3ZTY0ZjQ1OWM3OWM5ZjYyYmQ0M2I4OC5zZXRDb250ZW50KGh0bWxfYzI3ZDdlYTA4MTAxNGE2MzhmYTRlZTM5NjNlMTViYjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yMzM0ZWYxZWJkOTc0ZTk3YmNhNWUwNmZhNWY1ZGE0YS5iaW5kUG9wdXAocG9wdXBfZThhNzFkMDg3N2U2NGY0NTljNzljOWY2MmJkNDNiODgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmYxMGJhY2JkNjAyNDU5YjlkNzk4YmUyNDIwYmZiOTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMzQwYWNjNmQ2ZTg0YzY4YTY4YmI0N2VlNGNhYTRhZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iOTk4MzQ4ZjA0Mzk0M2Q3YjQyMWIwZGJlNTBkNjI1YyA9ICQoJzxkaXYgaWQ9Imh0bWxfYjk5ODM0OGYwNDM5NDNkN2I0MjFiMGRiZTUwZDYyNWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMzQwYWNjNmQ2ZTg0YzY4YTY4YmI0N2VlNGNhYTRhZi5zZXRDb250ZW50KGh0bWxfYjk5ODM0OGYwNDM5NDNkN2I0MjFiMGRiZTUwZDYyNWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yZjEwYmFjYmQ2MDI0NTliOWQ3OThiZTI0MjBiZmI5OS5iaW5kUG9wdXAocG9wdXBfMzM0MGFjYzZkNmU4NGM2OGE2OGJiNDdlZTRjYWE0YWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODI1OGMzZjU3YWQ3NGZiZmI2ZGYwNmIxZDliYmE3YmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU3ODgzNzY2ODg3OSwtMTIyLjQxMjk3MDUzNzU5MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzMTRkZjc3YmQzOTQ4NWViMDBiYTlkYTljMzE0NjRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg4NWI1MmQ1NGFkYjRkNjI5MmI4ZWQ0ZGNiMzkwYTQwID0gJCgnPGRpdiBpZD0iaHRtbF84ODViNTJkNTRhZGI0ZDYyOTJiOGVkNGRjYjM5MGE0MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MzE0ZGY3N2JkMzk0ODVlYjAwYmE5ZGE5YzMxNDY0YS5zZXRDb250ZW50KGh0bWxfODg1YjUyZDU0YWRiNGQ2MjkyYjhlZDRkY2IzOTBhNDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84MjU4YzNmNTdhZDc0ZmJmYjZkZjA2YjFkOWJiYTdiZS5iaW5kUG9wdXAocG9wdXBfOTMxNGRmNzdiZDM5NDg1ZWIwMGJhOWRhOWMzMTQ2NGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2JhYmNmNjljNzkyNGI4MWFlMjVkZTRlNDM1NTEwODIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjUxODc2YzZkMzZkNDE4OGFjYzUzYjdkYWJmNGU0YWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTdkZTliNDdhOGYwNDgzNGIwYjU2Y2JjOTUwOGYyMzIgPSAkKCc8ZGl2IGlkPSJodG1sXzE3ZGU5YjQ3YThmMDQ4MzRiMGI1NmNiYzk1MDhmMjMyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I1MTg3NmM2ZDM2ZDQxODhhY2M1M2I3ZGFiZjRlNGFjLnNldENvbnRlbnQoaHRtbF8xN2RlOWI0N2E4ZjA0ODM0YjBiNTZjYmM5NTA4ZjIzMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdiYWJjZjY5Yzc5MjRiODFhZTI1ZGU0ZTQzNTUxMDgyLmJpbmRQb3B1cChwb3B1cF9iNTE4NzZjNmQzNmQ0MTg4YWNjNTNiN2RhYmY0ZTRhYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81NWNkYjQ4ODM4YjQ0MTU2YTc1YzA1ZTM2NzUzODk4ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWU4YzFiZWZiZGM4NDEwZDliY2JjNmExN2Q0YTA4MTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2E3OTI4NzMwZTgyNDExZGE3OTViOTRjZGY5MzVlZWUgPSAkKCc8ZGl2IGlkPSJodG1sX2NhNzkyODczMGU4MjQxMWRhNzk1Yjk0Y2RmOTM1ZWVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZThjMWJlZmJkYzg0MTBkOWJjYmM2YTE3ZDRhMDgxMy5zZXRDb250ZW50KGh0bWxfY2E3OTI4NzMwZTgyNDExZGE3OTViOTRjZGY5MzVlZWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NWNkYjQ4ODM4YjQ0MTU2YTc1YzA1ZTM2NzUzODk4Zi5iaW5kUG9wdXAocG9wdXBfMWU4YzFiZWZiZGM4NDEwZDliY2JjNmExN2Q0YTA4MTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWQxZDBhODJkN2IwNDYwYzk5ZWI5YzY4MTU0ODhhODMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2M1ZjNiMzExODUwNGMzNjg5MmU4ZmI4NDU1MWMxMWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGJiM2JjZDFkMTAyNDAwYjlkMzM2YjVjZWQ2MDRlYjYgPSAkKCc8ZGl2IGlkPSJodG1sX2RiYjNiY2QxZDEwMjQwMGI5ZDMzNmI1Y2VkNjA0ZWI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2M1ZjNiMzExODUwNGMzNjg5MmU4ZmI4NDU1MWMxMWMuc2V0Q29udGVudChodG1sX2RiYjNiY2QxZDEwMjQwMGI5ZDMzNmI1Y2VkNjA0ZWI2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWQxZDBhODJkN2IwNDYwYzk5ZWI5YzY4MTU0ODhhODMuYmluZFBvcHVwKHBvcHVwX2NjNWYzYjMxMTg1MDRjMzY4OTJlOGZiODQ1NTFjMTFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU5YmUzYjM5ZTVkMzQ3MDU5YWMxODYxYjQ1MjE4M2Q1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVmZTNlZjVhYmRlYTQ5N2I5MjRkNjQ5ZmNhOTUzOGI2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM0MTM2YzMxNTU0OTRkNzA5N2JiYzhmZDYzNjY2YjZlID0gJCgnPGRpdiBpZD0iaHRtbF8zNDEzNmMzMTU1NDk0ZDcwOTdiYmM4ZmQ2MzY2NmI2ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZmUzZWY1YWJkZWE0OTdiOTI0ZDY0OWZjYTk1MzhiNi5zZXRDb250ZW50KGh0bWxfMzQxMzZjMzE1NTQ5NGQ3MDk3YmJjOGZkNjM2NjZiNmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81OWJlM2IzOWU1ZDM0NzA1OWFjMTg2MWI0NTIxODNkNS5iaW5kUG9wdXAocG9wdXBfNWZlM2VmNWFiZGVhNDk3YjkyNGQ2NDlmY2E5NTM4YjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGI5YjhhZjYwNTU4NDlkMWJlNjdiNTNhMzY0ZDY0ZWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82MjIyNzBjMjlhZjA0NzZiYjAyODQ0MjJjZWViNzhkMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYTlhOWU2YjU0ZDk0YWQyYWY4NjFmODUyZGE2YjJjYiA9ICQoJzxkaXYgaWQ9Imh0bWxfYmE5YTllNmI1NGQ5NGFkMmFmODYxZjg1MmRhNmIyY2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82MjIyNzBjMjlhZjA0NzZiYjAyODQ0MjJjZWViNzhkMS5zZXRDb250ZW50KGh0bWxfYmE5YTllNmI1NGQ5NGFkMmFmODYxZjg1MmRhNmIyY2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84YjliOGFmNjA1NTg0OWQxYmU2N2I1M2EzNjRkNjRlZC5iaW5kUG9wdXAocG9wdXBfNjIyMjcwYzI5YWYwNDc2YmIwMjg0NDIyY2VlYjc4ZDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjY0MWM4YjlkMjFiNDJhM2I4NDcyZjdjNGRiOTk1MzUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjA5NjY5NjE1NDk5LC0xMjIuMzg3MTgxNjM1OTk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDljMGQzMzM3ZjIwNGJiNGI3ZjFhYzFhMWQzOWU0ZjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjEwNzRiYzM4NmZmNDQyOTkxMWJiYWJjMzQ0ZWU4ZDkgPSAkKCc8ZGl2IGlkPSJodG1sXzIxMDc0YmMzODZmZjQ0Mjk5MTFiYmFiYzM0NGVlOGQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDljMGQzMzM3ZjIwNGJiNGI3ZjFhYzFhMWQzOWU0ZjQuc2V0Q29udGVudChodG1sXzIxMDc0YmMzODZmZjQ0Mjk5MTFiYmFiYzM0NGVlOGQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjY0MWM4YjlkMjFiNDJhM2I4NDcyZjdjNGRiOTk1MzUuYmluZFBvcHVwKHBvcHVwXzQ5YzBkMzMzN2YyMDRiYjRiN2YxYWMxYTFkMzllNGY0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MxNTI0ZDU4NGVmYzRiNWZhZTllMzA2Yjc5MjQ3OGRhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kY2E1NjMzNThhYzE0YWYwYTFmY2RjYTM3MTlkNDczZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NGFjYmM5N2JkNTE0NjI1OWY3MWQxMjZkMWFkNDk3NyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTRhY2JjOTdiZDUxNDYyNTlmNzFkMTI2ZDFhZDQ5NzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RjYTU2MzM1OGFjMTRhZjBhMWZjZGNhMzcxOWQ0NzNlLnNldENvbnRlbnQoaHRtbF81NGFjYmM5N2JkNTE0NjI1OWY3MWQxMjZkMWFkNDk3Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MxNTI0ZDU4NGVmYzRiNWZhZTllMzA2Yjc5MjQ3OGRhLmJpbmRQb3B1cChwb3B1cF9kY2E1NjMzNThhYzE0YWYwYTFmY2RjYTM3MTlkNDczZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yYjRkNjY4ZTIxYTE0ZmNhOWMxZmQ2ZDZjZTZmYjU3ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlkMWJjNjE1NTlhZjQxNzA4ODEyMTY5YzlhNzMwMjQ5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IyZDZkYzlhNzQxODQzOTQ5MWUwMmNjNDYzMzc2NTM0ID0gJCgnPGRpdiBpZD0iaHRtbF9iMmQ2ZGM5YTc0MTg0Mzk0OTFlMDJjYzQ2MzM3NjUzNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZDFiYzYxNTU5YWY0MTcwODgxMjE2OWM5YTczMDI0OS5zZXRDb250ZW50KGh0bWxfYjJkNmRjOWE3NDE4NDM5NDkxZTAyY2M0NjMzNzY1MzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYjRkNjY4ZTIxYTE0ZmNhOWMxZmQ2ZDZjZTZmYjU3ZC5iaW5kUG9wdXAocG9wdXBfOWQxYmM2MTU1OWFmNDE3MDg4MTIxNjljOWE3MzAyNDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDQzMmI0NWEwOTkyNGM1YjgxYzAxYTdkZDY3YzUzMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzU2OTcwMjc1NDgyMDYsLTEyMi4zNzY3NTc2NTU1MzAwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg2ZDA5NzQ1MWY2ZDQ2NWViODk0YTgwMDQ3YTU2ZjBmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNlNjIxNDNjYzdjMTRiYzM4MzZhYWJhMGE2OGE3OWRmID0gJCgnPGRpdiBpZD0iaHRtbF8zZTYyMTQzY2M3YzE0YmMzODM2YWFiYTBhNjhhNzlkZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg2ZDA5NzQ1MWY2ZDQ2NWViODk0YTgwMDQ3YTU2ZjBmLnNldENvbnRlbnQoaHRtbF8zZTYyMTQzY2M3YzE0YmMzODM2YWFiYTBhNjhhNzlkZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q0MzJiNDVhMDk5MjRjNWI4MWMwMWE3ZGQ2N2M1MzBiLmJpbmRQb3B1cChwb3B1cF84NmQwOTc0NTFmNmQ0NjVlYjg5NGE4MDA0N2E1NmYwZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84NzVmNTZlNzc4NTU0MGIwYmYwOTEyYWY4YTE3MjNlMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYTNmZWJjYThlYzA0ZTA1ODNmM2Q4MGVkZTIwYTRhOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNTcxMWVmNGNhZmQ0YmM4YThiNDdlNTU0NmY0YmE1YyA9ICQoJzxkaXYgaWQ9Imh0bWxfYjU3MTFlZjRjYWZkNGJjOGE4YjQ3ZTU1NDZmNGJhNWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhM2ZlYmNhOGVjMDRlMDU4M2YzZDgwZWRlMjBhNGE5LnNldENvbnRlbnQoaHRtbF9iNTcxMWVmNGNhZmQ0YmM4YThiNDdlNTU0NmY0YmE1Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg3NWY1NmU3Nzg1NTQwYjBiZjA5MTJhZjhhMTcyM2UyLmJpbmRQb3B1cChwb3B1cF9hYTNmZWJjYThlYzA0ZTA1ODNmM2Q4MGVkZTIwYTRhOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYzc3OGUzZTgzNGU0NTdjYmI0ZDg5OTM4YzY1OGNjMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjY5NTQ4Mjg1YjVjNGEzZTk2ZTZiZTQ2ZWViOTJkM2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjFiZmRhOTNiOTg4NGNiZGI1NjBhOTc1YWUxYWEwMzggPSAkKCc8ZGl2IGlkPSJodG1sX2IxYmZkYTkzYjk4ODRjYmRiNTYwYTk3NWFlMWFhMDM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjY5NTQ4Mjg1YjVjNGEzZTk2ZTZiZTQ2ZWViOTJkM2Uuc2V0Q29udGVudChodG1sX2IxYmZkYTkzYjk4ODRjYmRiNTYwYTk3NWFlMWFhMDM4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWM3NzhlM2U4MzRlNDU3Y2JiNGQ4OTkzOGM2NThjYzMuYmluZFBvcHVwKHBvcHVwXzY2OTU0ODI4NWI1YzRhM2U5NmU2YmU0NmVlYjkyZDNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkzZTFkMDUwMDI5MTQwZGM5YWFmOGRkZmQxN2YwZDIxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzljNjVkNDExNGYzOTQ0MzliYWE0ZTBkNDQ1NmQ5MjNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE4ZTRkM2U4MmRiZTRmNzg4OGY1ZWNjNjNjNDMzOTI3ID0gJCgnPGRpdiBpZD0iaHRtbF8xOGU0ZDNlODJkYmU0Zjc4ODhmNWVjYzYzYzQzMzkyNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1RPTEVOIFBST1BFUlRZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YzY1ZDQxMTRmMzk0NDM5YmFhNGUwZDQ0NTZkOTIzZS5zZXRDb250ZW50KGh0bWxfMThlNGQzZTgyZGJlNGY3ODg4ZjVlY2M2M2M0MzM5MjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85M2UxZDA1MDAyOTE0MGRjOWFhZjhkZGZkMTdmMGQyMS5iaW5kUG9wdXAocG9wdXBfOWM2NWQ0MTE0ZjM5NDQzOWJhYTRlMGQ0NDU2ZDkyM2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmVkMWUxNTlkZjU3NDFmMzgxMDQ2YjQ3NzgyMjJhODggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNjQxYjhhNGMzY2U0YTY2ODJkNTI0ZTRhMzc5Yzc4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mY2I2NTZiOGJhZGI0NmU0OTNmMGM0MTkyNjI4ZDA1NSA9ICQoJzxkaXYgaWQ9Imh0bWxfZmNiNjU2YjhiYWRiNDZlNDkzZjBjNDE5MjYyOGQwNTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM2NDFiOGE0YzNjZTRhNjY4MmQ1MjRlNGEzNzljNzhkLnNldENvbnRlbnQoaHRtbF9mY2I2NTZiOGJhZGI0NmU0OTNmMGM0MTkyNjI4ZDA1NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZlZDFlMTU5ZGY1NzQxZjM4MTA0NmI0Nzc4MjIyYTg4LmJpbmRQb3B1cChwb3B1cF8zNjQxYjhhNGMzY2U0YTY2ODJkNTI0ZTRhMzc5Yzc4ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZDk0NjA2MzNlODc0NGU5OTI1M2JhYzEzNjQ2OWNmYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZkYzk1MTRiZTQwODQ2OTViMWI3YzI0ZjU0MWVhYTAxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk4NTViY2ViOWI0MzRiZWM4N2M2OGY2OWMwYzlmZjVlID0gJCgnPGRpdiBpZD0iaHRtbF85ODU1YmNlYjliNDM0YmVjODdjNjhmNjljMGM5ZmY1ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmRjOTUxNGJlNDA4NDY5NWIxYjdjMjRmNTQxZWFhMDEuc2V0Q29udGVudChodG1sXzk4NTViY2ViOWI0MzRiZWM4N2M2OGY2OWMwYzlmZjVlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGQ5NDYwNjMzZTg3NDRlOTkyNTNiYWMxMzY0NjljZmIuYmluZFBvcHVwKHBvcHVwX2ZkYzk1MTRiZTQwODQ2OTViMWI3YzI0ZjU0MWVhYTAxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y0YzU2MzAyMDI3MDQyYTliM2QyZGExNGUxMTFhOGNmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE1NzY1NDI2OTk1LC0xMjIuNDM5OTA5NzY2NzcyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjE5MjhjZDYzNDkxNDdmZTkxMDkzNTE4NzhjYTIyOTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjNjMDNlYTUxYmUzNDMwNGI4MjFhMGZhNTQxMmUzOGMgPSAkKCc8ZGl2IGlkPSJodG1sXzIzYzAzZWE1MWJlMzQzMDRiODIxYTBmYTU0MTJlMzhjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMTkyOGNkNjM0OTE0N2ZlOTEwOTM1MTg3OGNhMjI5OC5zZXRDb250ZW50KGh0bWxfMjNjMDNlYTUxYmUzNDMwNGI4MjFhMGZhNTQxMmUzOGMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNGM1NjMwMjAyNzA0MmE5YjNkMmRhMTRlMTExYThjZi5iaW5kUG9wdXAocG9wdXBfZjE5MjhjZDYzNDkxNDdmZTkxMDkzNTE4NzhjYTIyOTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWQwOWNmNTk1OWE5NGUyMjk3MDNlMWNkMzQyZDNjMzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTQ2MjM5NGRkY2FhNGQ3N2E0MWNlYmFhNTQ0ODU2ZmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTk0YWFkMmQxZDgzNGZiOTg3NmViNWUwMjk2MmNjN2EgPSAkKCc8ZGl2IGlkPSJodG1sXzE5NGFhZDJkMWQ4MzRmYjk4NzZlYjVlMDI5NjJjYzdhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNDYyMzk0ZGRjYWE0ZDc3YTQxY2ViYWE1NDQ4NTZmZi5zZXRDb250ZW50KGh0bWxfMTk0YWFkMmQxZDgzNGZiOTg3NmViNWUwMjk2MmNjN2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hZDA5Y2Y1OTU5YTk0ZTIyOTcwM2UxY2QzNDJkM2MzNy5iaW5kUG9wdXAocG9wdXBfYTQ2MjM5NGRkY2FhNGQ3N2E0MWNlYmFhNTQ0ODU2ZmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDJmMzUwZTNmNDhmNGFhMTk2MGMzOWYxYmQ1Mjc0ODggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZTliN2JlYjg2N2Q0YjBhYmQ1MDBmNmUzODczMTY5NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNjBjMmFmZThkM2M0NjQ2OGEwZTgzNWZmM2MxNDg3OSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTYwYzJhZmU4ZDNjNDY0NjhhMGU4MzVmZjNjMTQ4NzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZTliN2JlYjg2N2Q0YjBhYmQ1MDBmNmUzODczMTY5NS5zZXRDb250ZW50KGh0bWxfYTYwYzJhZmU4ZDNjNDY0NjhhMGU4MzVmZjNjMTQ4NzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMmYzNTBlM2Y0OGY0YWExOTYwYzM5ZjFiZDUyNzQ4OC5iaW5kUG9wdXAocG9wdXBfNmU5YjdiZWI4NjdkNGIwYWJkNTAwZjZlMzg3MzE2OTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDM2NDMyZGVhMjEzNGIxOTljODc2ZDNmNDhlYjgxZTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IzZjJiYTg5MThjMjRhNDlhNDg4NjgwMTM1ZGRkM2ZkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E4Mjg0MjE2ZDI0YjRhY2I4YTY3Y2NhNWU3ZGZmOWE1ID0gJCgnPGRpdiBpZD0iaHRtbF9hODI4NDIxNmQyNGI0YWNiOGE2N2NjYTVlN2RmZjlhNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IzZjJiYTg5MThjMjRhNDlhNDg4NjgwMTM1ZGRkM2ZkLnNldENvbnRlbnQoaHRtbF9hODI4NDIxNmQyNGI0YWNiOGE2N2NjYTVlN2RmZjlhNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2QzNjQzMmRlYTIxMzRiMTk5Yzg3NmQzZjQ4ZWI4MWUyLmJpbmRQb3B1cChwb3B1cF9iM2YyYmE4OTE4YzI0YTQ5YTQ4ODY4MDEzNWRkZDNmZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81YTJiNzQzOWZiNDI0MDYxYTY0MWE5ZGQwMTg0MzZkOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDZmMDc0ZWExM2YxNGMzMGExMWEzNWJhNTM4NTdjYmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTAxNDVhNTA4YWMxNGQwN2EyMTQ1NjJmNTlmNDQwNTggPSAkKCc8ZGl2IGlkPSJodG1sXzkwMTQ1YTUwOGFjMTRkMDdhMjE0NTYyZjU5ZjQ0MDU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NmYwNzRlYTEzZjE0YzMwYTExYTM1YmE1Mzg1N2NiYi5zZXRDb250ZW50KGh0bWxfOTAxNDVhNTA4YWMxNGQwN2EyMTQ1NjJmNTlmNDQwNTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81YTJiNzQzOWZiNDI0MDYxYTY0MWE5ZGQwMTg0MzZkOS5iaW5kUG9wdXAocG9wdXBfNDZmMDc0ZWExM2YxNGMzMGExMWEzNWJhNTM4NTdjYmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzkwZmJmNTcwZTRkNDQ2OGJhNmQ1MGYyODk1ZjI1MDggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JhNDkzZmI5ZjA3NTQ4MTliZWZhN2UwZWQyNzliYWY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk4YjliM2IyZDQyYTRlNjBhM2Y3OGI5N2FmZjg1MzVlID0gJCgnPGRpdiBpZD0iaHRtbF85OGI5YjNiMmQ0MmE0ZTYwYTNmNzhiOTdhZmY4NTM1ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JhNDkzZmI5ZjA3NTQ4MTliZWZhN2UwZWQyNzliYWY4LnNldENvbnRlbnQoaHRtbF85OGI5YjNiMmQ0MmE0ZTYwYTNmNzhiOTdhZmY4NTM1ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc5MGZiZjU3MGU0ZDQ0NjhiYTZkNTBmMjg5NWYyNTA4LmJpbmRQb3B1cChwb3B1cF9iYTQ5M2ZiOWYwNzU0ODE5YmVmYTdlMGVkMjc5YmFmOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hMmNhYTAzOGQxMWY0ZTUzYjk1MzUyOTAzOGM2YTI2MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MTQ5Mzk5Njk0MTYsLTEyMi41MDc3NTAxMzEwMDQwMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ViZThlZWZkNGQ2ZjQ3ZDJhYTlhZjRlNWM1OWRmMWYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIyOWM0NDM5YzI5MDRiZjNhN2E2NjRhZWQzYzRiNTExID0gJCgnPGRpdiBpZD0iaHRtbF8yMjljNDQzOWMyOTA0YmYzYTdhNjY0YWVkM2M0YjUxMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWJlOGVlZmQ0ZDZmNDdkMmFhOWFmNGU1YzU5ZGYxZjMuc2V0Q29udGVudChodG1sXzIyOWM0NDM5YzI5MDRiZjNhN2E2NjRhZWQzYzRiNTExKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTJjYWEwMzhkMTFmNGU1M2I5NTM1MjkwMzhjNmEyNjAuYmluZFBvcHVwKHBvcHVwX2ViZThlZWZkNGQ2ZjQ3ZDJhYTlhZjRlNWM1OWRmMWYzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ5MWNjYWY4NmU5MzQ4YmRiYWM0ZjBiOThhZjVkNTkyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMDY1Y2NiYjU1OWI0MmI0ODk4NGY2M2JhOTY1OGZkNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZGE2YmI0OTZlNGI0NTMxYjA3OTQ5N2QzN2I2ZjNmMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNmRhNmJiNDk2ZTRiNDUzMWIwNzk0OTdkMzdiNmYzZjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMDY1Y2NiYjU1OWI0MmI0ODk4NGY2M2JhOTY1OGZkNi5zZXRDb250ZW50KGh0bWxfNmRhNmJiNDk2ZTRiNDUzMWIwNzk0OTdkMzdiNmYzZjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80OTFjY2FmODZlOTM0OGJkYmFjNGYwYjk4YWY1ZDU5Mi5iaW5kUG9wdXAocG9wdXBfMzA2NWNjYmI1NTliNDJiNDg5ODRmNjNiYTk2NThmZDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGQ2YWExMTRmYTFmNGI2YWFjMDNmOGUwNDU2OGU1NTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWYzZDYzM2QyMDZjNDIyM2JiZmEzN2JjNDE1MzE2NjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzBhMDI1M2Y1MTQ1NDkxNWE1YmE0OGE3Y2E4Yzc1NjIgPSAkKCc8ZGl2IGlkPSJodG1sXzMwYTAyNTNmNTE0NTQ5MTVhNWJhNDhhN2NhOGM3NTYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWYzZDYzM2QyMDZjNDIyM2JiZmEzN2JjNDE1MzE2Njkuc2V0Q29udGVudChodG1sXzMwYTAyNTNmNTE0NTQ5MTVhNWJhNDhhN2NhOGM3NTYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGQ2YWExMTRmYTFmNGI2YWFjMDNmOGUwNDU2OGU1NTMuYmluZFBvcHVwKHBvcHVwXzlmM2Q2MzNkMjA2YzQyMjNiYmZhMzdiYzQxNTMxNjY5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VkN2MyYTkwMjY1YzQ4OTg5MmE3MDhkNDBmM2YzZWQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NDM3ODMwOTExMiwtMTIyLjQxOTIwMzAwNDI2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EwOTFmZGIxOTI1MjQ0Y2FhZjEzMmNkNDEzNDdiYThlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q3NDYzNmEyNTUxMDQ1MDE4YTI2M2I3OWVhY2U1MzRiID0gJCgnPGRpdiBpZD0iaHRtbF9kNzQ2MzZhMjU1MTA0NTAxOGEyNjNiNzllYWNlNTM0YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2EwOTFmZGIxOTI1MjQ0Y2FhZjEzMmNkNDEzNDdiYThlLnNldENvbnRlbnQoaHRtbF9kNzQ2MzZhMjU1MTA0NTAxOGEyNjNiNzllYWNlNTM0Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VkN2MyYTkwMjY1YzQ4OTg5MmE3MDhkNDBmM2YzZWQ4LmJpbmRQb3B1cChwb3B1cF9hMDkxZmRiMTkyNTI0NGNhYWYxMzJjZDQxMzQ3YmE4ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNzlkY2QwM2VkZTU0MDEwYjA0M2I2MjUwYTQ5OGYxMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdiMDM5ZmY4ODg3MzQ5MGY5ODc4ZGMyMDFhNjljZTY3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBjOGVkYTZmMTY2ZjQwNTFiNzQ1YmFhZGJlOGZjMzczID0gJCgnPGRpdiBpZD0iaHRtbF8wYzhlZGE2ZjE2NmY0MDUxYjc0NWJhYWRiZThmYzM3MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdiMDM5ZmY4ODg3MzQ5MGY5ODc4ZGMyMDFhNjljZTY3LnNldENvbnRlbnQoaHRtbF8wYzhlZGE2ZjE2NmY0MDUxYjc0NWJhYWRiZThmYzM3Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE3OWRjZDAzZWRlNTQwMTBiMDQzYjYyNTBhNDk4ZjEwLmJpbmRQb3B1cChwb3B1cF83YjAzOWZmODg4NzM0OTBmOTg3OGRjMjAxYTY5Y2U2Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yMmJmMzBmYTkzM2Y0N2Q2OTUwNjU2YzY5ZDNlYWYyMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZjljYzZhMjE3Mjk0Mjg4YjA2OTc1Y2QxOTgzMjNjMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNGJhNDZlNDMzODA0MTllOWIyZTM1YTdjNmIzYzY1YSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjRiYTQ2ZTQzMzgwNDE5ZTliMmUzNWE3YzZiM2M2NWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWY5Y2M2YTIxNzI5NDI4OGIwNjk3NWNkMTk4MzIzYzIuc2V0Q29udGVudChodG1sX2Y0YmE0NmU0MzM4MDQxOWU5YjJlMzVhN2M2YjNjNjVhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjJiZjMwZmE5MzNmNDdkNjk1MDY1NmM2OWQzZWFmMjMuYmluZFBvcHVwKHBvcHVwX2FmOWNjNmEyMTcyOTQyODhiMDY5NzVjZDE5ODMyM2MyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQxYWJjZmU2MWQ1MjQ2NWRhNGU2MjE1MWUxOTRmMGM1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3OTIwOTM3NTUzMjk1LC0xMjIuNDEwODgyODI1NTUxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGEyYWNlZjM1YzdhNDU5NWFkZmY4MjIzNzA2OWZjNGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGI3ZjBmMjcwZjdlNDA3Y2E3N2Y4ZTJmNzgzNjM3NWUgPSAkKCc8ZGl2IGlkPSJodG1sX2RiN2YwZjI3MGY3ZTQwN2NhNzdmOGUyZjc4MzYzNzVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYTJhY2VmMzVjN2E0NTk1YWRmZjgyMjM3MDY5ZmM0ZS5zZXRDb250ZW50KGh0bWxfZGI3ZjBmMjcwZjdlNDA3Y2E3N2Y4ZTJmNzgzNjM3NWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80MWFiY2ZlNjFkNTI0NjVkYTRlNjIxNTFlMTk0ZjBjNS5iaW5kUG9wdXAocG9wdXBfMGEyYWNlZjM1YzdhNDU5NWFkZmY4MjIzNzA2OWZjNGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzM0NmZhYmY2NTI2NDljMTk5ZjU2ZmY1N2I2YzFjOTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWZlYjJhYTVkNWM2NGY1MzgyNmMxNmE5MTJlNGY4MDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjQzMDMwYzhkZjlhNGY2Mjg0YmEzMDg3NzhjZGE1ZTkgPSAkKCc8ZGl2IGlkPSJodG1sX2Y0MzAzMGM4ZGY5YTRmNjI4NGJhMzA4Nzc4Y2RhNWU5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZmViMmFhNWQ1YzY0ZjUzODI2YzE2YTkxMmU0ZjgwOC5zZXRDb250ZW50KGh0bWxfZjQzMDMwYzhkZjlhNGY2Mjg0YmEzMDg3NzhjZGE1ZTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zMzQ2ZmFiZjY1MjY0OWMxOTlmNTZmZjU3YjZjMWM5My5iaW5kUG9wdXAocG9wdXBfYWZlYjJhYTVkNWM2NGY1MzgyNmMxNmE5MTJlNGY4MDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzEzOGQ4NGY3MjZjNGRmMTgzMTZhMjgzODczYzY3OGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWM4OTkxYTQwZmJlNGZjMDg2MjVkMTQ0NDNmM2IxOTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmZlYjA0ZGEwOGU0NDI2MzgyY2JiOTBlMGU3MTM0YWQgPSAkKCc8ZGl2IGlkPSJodG1sX2JmZWIwNGRhMDhlNDQyNjM4MmNiYjkwZTBlNzEzNGFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYzg5OTFhNDBmYmU0ZmMwODYyNWQxNDQ0M2YzYjE5NC5zZXRDb250ZW50KGh0bWxfYmZlYjA0ZGEwOGU0NDI2MzgyY2JiOTBlMGU3MTM0YWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zMTM4ZDg0ZjcyNmM0ZGYxODMxNmEyODM4NzNjNjc4ZS5iaW5kUG9wdXAocG9wdXBfZWM4OTkxYTQwZmJlNGZjMDg2MjVkMTQ0NDNmM2IxOTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWM3OTNhZTJmZWQ4NDUwZDhiMTRlZDA5MDFhN2RiMTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODY1NjQ3NjA3Njg1LC0xMjIuNDA3MjQ0MDg3MDMyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTUzZjcwMGJhYzUzNDAzZjg3YWRjMzNhNmUyY2EzZTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmY5NDA2NTRiNWQ2NGFiNjkxZDdlN2FmZGQ2ZDA5ZmYgPSAkKCc8ZGl2IGlkPSJodG1sX2JmOTQwNjU0YjVkNjRhYjY5MWQ3ZTdhZmRkNmQwOWZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNTNmNzAwYmFjNTM0MDNmODdhZGMzM2E2ZTJjYTNlOC5zZXRDb250ZW50KGh0bWxfYmY5NDA2NTRiNWQ2NGFiNjkxZDdlN2FmZGQ2ZDA5ZmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81Yzc5M2FlMmZlZDg0NTBkOGIxNGVkMDkwMWE3ZGIxNC5iaW5kUG9wdXAocG9wdXBfYTUzZjcwMGJhYzUzNDAzZjg3YWRjMzNhNmUyY2EzZTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmMxZTJmZDVmZGRhNDliOTg3MDM4NTc0ZGY5MzQ0OWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYTkwMzRhNzAzZTc0NDlmYTU3ZGVhYzFmMDZkZWVkZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZTdkNDgyYWViODE0NWYzYjJmYjkxNmIzNGQzZGU1NSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWU3ZDQ4MmFlYjgxNDVmM2IyZmI5MTZiMzRkM2RlNTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYTkwMzRhNzAzZTc0NDlmYTU3ZGVhYzFmMDZkZWVkZS5zZXRDb250ZW50KGh0bWxfNWU3ZDQ4MmFlYjgxNDVmM2IyZmI5MTZiMzRkM2RlNTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mYzFlMmZkNWZkZGE0OWI5ODcwMzg1NzRkZjkzNDQ5ZS5iaW5kUG9wdXAocG9wdXBfYmE5MDM0YTcwM2U3NDQ5ZmE1N2RlYWMxZjA2ZGVlZGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzI4MWE2NTM5MjEzNDgzOThiZGRjNGQ2NTZlNzEzNDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xMzVhZjhlNGQ0OGI0NGRlOTFiMmM1YmM4NWIzMDVhNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMGNlNDdhYTI0OWE0ZTA5OWNkYzE2YjkzODBmZWY4MSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTBjZTQ3YWEyNDlhNGUwOTljZGMxNmI5MzgwZmVmODEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMzVhZjhlNGQ0OGI0NGRlOTFiMmM1YmM4NWIzMDVhNi5zZXRDb250ZW50KGh0bWxfMTBjZTQ3YWEyNDlhNGUwOTljZGMxNmI5MzgwZmVmODEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jMjgxYTY1MzkyMTM0ODM5OGJkZGM0ZDY1NmU3MTM0NC5iaW5kUG9wdXAocG9wdXBfMTM1YWY4ZTRkNDhiNDRkZTkxYjJjNWJjODViMzA1YTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTQ3Y2ZhNWNhNjRmNDI5NmJiNzEzMThiNTVmZTcxMGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDQxOTI3NTA4OTMyMDUsLTEyMi40NDQ2ODU0ODIyNzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYjc4ZTljOWRmMWU0MThlODM3ZWJiOWYyZGYyNmIwMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84N2E0ZDBjMDNjNDY0ODAwYTdjZWJhMzYxNGU5OWVmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfODdhNGQwYzAzYzQ2NDgwMGE3Y2ViYTM2MTRlOTllZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2I3OGU5YzlkZjFlNDE4ZTgzN2ViYjlmMmRmMjZiMDMuc2V0Q29udGVudChodG1sXzg3YTRkMGMwM2M0NjQ4MDBhN2NlYmEzNjE0ZTk5ZWY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTQ3Y2ZhNWNhNjRmNDI5NmJiNzEzMThiNTVmZTcxMGMuYmluZFBvcHVwKHBvcHVwX2NiNzhlOWM5ZGYxZTQxOGU4MzdlYmI5ZjJkZjI2YjAzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU4ZTkwMzhjYjM4MDRkMGNiM2RlNDhlOWYxM2QzODM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgxMmYyODMzYzJhNjQxODI4OTBlMjI4ODUxNDc3ZTM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IzZjA1Y2U4MzI2NjRmZWE5YzMwMjllNWIzMDNhOWNkID0gJCgnPGRpdiBpZD0iaHRtbF9iM2YwNWNlODMyNjY0ZmVhOWMzMDI5ZTViMzAzYTljZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MTJmMjgzM2MyYTY0MTgyODkwZTIyODg1MTQ3N2UzNi5zZXRDb250ZW50KGh0bWxfYjNmMDVjZTgzMjY2NGZlYTljMzAyOWU1YjMwM2E5Y2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81OGU5MDM4Y2IzODA0ZDBjYjNkZTQ4ZTlmMTNkMzgzNC5iaW5kUG9wdXAocG9wdXBfODEyZjI4MzNjMmE2NDE4Mjg5MGUyMjg4NTE0NzdlMzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTI2ZjkwZWE5YjBmNDI3Zjk0ODYzZjBjMDNkOTM3ZDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMjkyYWQwMWM2ZmY0ODBlOTJiMzA5MjZhYmIzYzI5OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kYjU5ZThlMTg0YzU0ZTYyODA3YmM1MDZkNGM3OTFlOCA9ICQoJzxkaXYgaWQ9Imh0bWxfZGI1OWU4ZTE4NGM1NGU2MjgwN2JjNTA2ZDRjNzkxZTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAyOTJhZDAxYzZmZjQ4MGU5MmIzMDkyNmFiYjNjMjk4LnNldENvbnRlbnQoaHRtbF9kYjU5ZThlMTg0YzU0ZTYyODA3YmM1MDZkNGM3OTFlOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzkyNmY5MGVhOWIwZjQyN2Y5NDg2M2YwYzAzZDkzN2Q1LmJpbmRQb3B1cChwb3B1cF8wMjkyYWQwMWM2ZmY0ODBlOTJiMzA5MjZhYmIzYzI5OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80YjBmMDc5N2Y1NGY0YWFmYTk3YjVjYjc0Yjk4ZGQ0OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0Mjg1MTczNzQ0NDg5NCwtMTIyLjQyMDk2NzQ0MDU2NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBjMDdkYzBhZDg0ZjQzZTY4MmU3MDg5NzYwOTkxY2I3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE1Y2IyMmY5MGNiNDQzZTdhYjM2OGZmNDM4MmZhOTU2ID0gJCgnPGRpdiBpZD0iaHRtbF8xNWNiMjJmOTBjYjQ0M2U3YWIzNjhmZjQzODJmYTk1NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBjMDdkYzBhZDg0ZjQzZTY4MmU3MDg5NzYwOTkxY2I3LnNldENvbnRlbnQoaHRtbF8xNWNiMjJmOTBjYjQ0M2U3YWIzNjhmZjQzODJmYTk1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRiMGYwNzk3ZjU0ZjRhYWZhOTdiNWNiNzRiOThkZDQ5LmJpbmRQb3B1cChwb3B1cF8wYzA3ZGMwYWQ4NGY0M2U2ODJlNzA4OTc2MDk5MWNiNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mMDEyMGY3OWU1YjE0MzlmYWQ1YWEwZTU5NDUwYWRlNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYjM0ZWVkMGEzOGY0MjM5ODEwYzU1YWU3NmQ3MWY1ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMDBkNzM5YzkxNTg0ZmYwOThjYzFhOTMzMjI0ZjBjNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMzAwZDczOWM5MTU4NGZmMDk4Y2MxYTkzMzIyNGYwYzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWIzNGVlZDBhMzhmNDIzOTgxMGM1NWFlNzZkNzFmNWYuc2V0Q29udGVudChodG1sXzMwMGQ3MzljOTE1ODRmZjA5OGNjMWE5MzMyMjRmMGM0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjAxMjBmNzllNWIxNDM5ZmFkNWFhMGU1OTQ1MGFkZTcuYmluZFBvcHVwKHBvcHVwX2ViMzRlZWQwYTM4ZjQyMzk4MTBjNTVhZTc2ZDcxZjVmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ0ZTNmM2I1NGJkZTQzYjc4ZGYwN2ZiODY4YzliMGQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzEyMDQ3NzFjZmI3ZDQxYTE5NWY4NjU5YzdlNGU4NjhiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJmZjgxYzBjNTUzZDQ4NTlhZDg3YTMyZjAyNmEwODhjID0gJCgnPGRpdiBpZD0iaHRtbF8yZmY4MWMwYzU1M2Q0ODU5YWQ4N2EzMmYwMjZhMDg4YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTIwNDc3MWNmYjdkNDFhMTk1Zjg2NTljN2U0ZTg2OGIuc2V0Q29udGVudChodG1sXzJmZjgxYzBjNTUzZDQ4NTlhZDg3YTMyZjAyNmEwODhjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDRlM2YzYjU0YmRlNDNiNzhkZjA3ZmI4NjhjOWIwZDAuYmluZFBvcHVwKHBvcHVwXzEyMDQ3NzFjZmI3ZDQxYTE5NWY4NjU5YzdlNGU4NjhiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ4NDU5NWNiYTA1NTRjMzRiNWUxMjU2OWY2MTRlODgyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1NzE4NDM5NTI4MiwtMTIyLjQwOTUyOTkxMzI3OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M1YzlkNDZlZGFjZDRjOWY4MWYzMjJmMDRiMmI4ODBmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJhYmU5ZGE3NzkyMzQxOTg5ODgyNTZhN2IxODJiMjU0ID0gJCgnPGRpdiBpZD0iaHRtbF8yYWJlOWRhNzc5MjM0MTk4OTg4MjU2YTdiMTgyYjI1NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzVjOWQ0NmVkYWNkNGM5ZjgxZjMyMmYwNGIyYjg4MGYuc2V0Q29udGVudChodG1sXzJhYmU5ZGE3NzkyMzQxOTg5ODgyNTZhN2IxODJiMjU0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDg0NTk1Y2JhMDU1NGMzNGI1ZTEyNTY5ZjYxNGU4ODIuYmluZFBvcHVwKHBvcHVwX2M1YzlkNDZlZGFjZDRjOWY4MWYzMjJmMDRiMmI4ODBmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQzMzNhOTYwMWQxZDQ3MDdhMGI3ZDY1YzJmMTRjZGE1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMjdjOWM3MjA0YTk0NDY4YmY5YWEyNDYwYjY4ZDQ1MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NGVkZmQyMjY3NzY0ZmNkOGNhMjVhZmMwOGQxMWIyZiA9ICQoJzxkaXYgaWQ9Imh0bWxfODRlZGZkMjI2Nzc2NGZjZDhjYTI1YWZjMDhkMTFiMmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDI3YzljNzIwNGE5NDQ2OGJmOWFhMjQ2MGI2OGQ0NTMuc2V0Q29udGVudChodG1sXzg0ZWRmZDIyNjc3NjRmY2Q4Y2EyNWFmYzA4ZDExYjJmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDMzM2E5NjAxZDFkNDcwN2EwYjdkNjVjMmYxNGNkYTUuYmluZFBvcHVwKHBvcHVwXzAyN2M5YzcyMDRhOTQ0NjhiZjlhYTI0NjBiNjhkNDUzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzcyZGU4MTg4NGRmZTQ4OTZiMTY3ZmU1YTMzNzU1MmQyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzE5MzA4ZGU3OWZiNGI4ODlhNGZmOTVhZDA2NGJhYWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGRkYTcyNzY4NjI3NGQ1Yzg4MzA5NzBjOThjZmFkYjEgPSAkKCc8ZGl2IGlkPSJodG1sXzRkZGE3Mjc2ODYyNzRkNWM4ODMwOTcwYzk4Y2ZhZGIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzE5MzA4ZGU3OWZiNGI4ODlhNGZmOTVhZDA2NGJhYWUuc2V0Q29udGVudChodG1sXzRkZGE3Mjc2ODYyNzRkNWM4ODMwOTcwYzk4Y2ZhZGIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzJkZTgxODg0ZGZlNDg5NmIxNjdmZTVhMzM3NTUyZDIuYmluZFBvcHVwKHBvcHVwXzMxOTMwOGRlNzlmYjRiODg5YTRmZjk1YWQwNjRiYWFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I0ZmQ1NDVlMWVlMDQ0YmI4NTRlZmQ4ZjMzODliNjg5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTU1OWRiMTZhMzE2NDg4YTgyMjcwZjVkN2ViOTQ4YzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmMxZjFmYjYyMDc4NGVmNTk2YzA3ZmJmYzZiMjA0MTUgPSAkKCc8ZGl2IGlkPSJodG1sXzZjMWYxZmI2MjA3ODRlZjU5NmMwN2ZiZmM2YjIwNDE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTU1OWRiMTZhMzE2NDg4YTgyMjcwZjVkN2ViOTQ4YzUuc2V0Q29udGVudChodG1sXzZjMWYxZmI2MjA3ODRlZjU5NmMwN2ZiZmM2YjIwNDE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjRmZDU0NWUxZWUwNDRiYjg1NGVmZDhmMzM4OWI2ODkuYmluZFBvcHVwKHBvcHVwX2U1NTlkYjE2YTMxNjQ4OGE4MjI3MGY1ZDdlYjk0OGM1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ5ZGY0OWFlY2IwNzRiYzVhMzBmZDE2M2FmODBmYWU5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMyM2EzMjNkZTcwOTQ0OGY5NWRkN2RkOWVjMTc2YjQxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEyNGJkMzNjMGQxMDQ1N2Y4NmRlNjM4NmMzNmI1ZTJmID0gJCgnPGRpdiBpZD0iaHRtbF8xMjRiZDMzYzBkMTA0NTdmODZkZTYzODZjMzZiNWUyZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMyM2EzMjNkZTcwOTQ0OGY5NWRkN2RkOWVjMTc2YjQxLnNldENvbnRlbnQoaHRtbF8xMjRiZDMzYzBkMTA0NTdmODZkZTYzODZjMzZiNWUyZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ5ZGY0OWFlY2IwNzRiYzVhMzBmZDE2M2FmODBmYWU5LmJpbmRQb3B1cChwb3B1cF8zMjNhMzIzZGU3MDk0NDhmOTVkZDdkZDllYzE3NmI0MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xOTE0NmNlN2U1MzM0ZDE0YWJjYjFlNDZmMzI4ZGIxZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81ZDYwNTgwZGU2YTI0M2FjYmJhYjdhYTFkNDkyMzg2ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hOTgzZTRmNDY5Nzg0ZDExYjk2ZTM5ZjYxZjkzOGVhOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTk4M2U0ZjQ2OTc4NGQxMWI5NmUzOWY2MWY5MzhlYTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVkNjA1ODBkZTZhMjQzYWNiYmFiN2FhMWQ0OTIzODZkLnNldENvbnRlbnQoaHRtbF9hOTgzZTRmNDY5Nzg0ZDExYjk2ZTM5ZjYxZjkzOGVhOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE5MTQ2Y2U3ZTUzMzRkMTRhYmNiMWU0NmYzMjhkYjFlLmJpbmRQb3B1cChwb3B1cF81ZDYwNTgwZGU2YTI0M2FjYmJhYjdhYTFkNDkyMzg2ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ODcwNjVjZWNlYWE0NmU0OWUwNDQwZjRjMmMwNjAxMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NjAxNjAxMTQxMDMsLTEyMi40MDM2NDQ2MjA0MzldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80OWNlYzhlODhhZDM0MzQzYjg1MWE3MDhkYzdmZWM1YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMTY1MDVmOGE3N2E0NDQ2ODYyOGFiNTFjMTEwMmE2NCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjE2NTA1ZjhhNzdhNDQ0Njg2MjhhYjUxYzExMDJhNjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80OWNlYzhlODhhZDM0MzQzYjg1MWE3MDhkYzdmZWM1YS5zZXRDb250ZW50KGh0bWxfMjE2NTA1ZjhhNzdhNDQ0Njg2MjhhYjUxYzExMDJhNjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ODcwNjVjZWNlYWE0NmU0OWUwNDQwZjRjMmMwNjAxMi5iaW5kUG9wdXAocG9wdXBfNDljZWM4ZTg4YWQzNDM0M2I4NTFhNzA4ZGM3ZmVjNWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzEwZTdlOWFjNDEwNDQ2NDllNzk3ZTI3NzQ2MjlhNzAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWYxMDgwZDA3NzliNDA4NTkwMGFlMjBhYjMzMDJjYjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzBmOTBlOTViMzEzNDYzZGIyNjc2NjNmNDFkOTMwNGEgPSAkKCc8ZGl2IGlkPSJodG1sXzcwZjkwZTk1YjMxMzQ2M2RiMjY3NjYzZjQxZDkzMDRhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWYxMDgwZDA3NzliNDA4NTkwMGFlMjBhYjMzMDJjYjEuc2V0Q29udGVudChodG1sXzcwZjkwZTk1YjMxMzQ2M2RiMjY3NjYzZjQxZDkzMDRhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzEwZTdlOWFjNDEwNDQ2NDllNzk3ZTI3NzQ2MjlhNzAuYmluZFBvcHVwKHBvcHVwX2VmMTA4MGQwNzc5YjQwODU5MDBhZTIwYWIzMzAyY2IxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA5YjBkMmQ5MDM5MDQ4MDFiZjMwZDFkOWIyNjIwYWEwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzMxNDhjNGQzNTY2NDRjNDkxNzRkMzJjOTA5OWJlNmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWU2MjZlZWU0YWQ5NDk5NGFjZjQ4MTljYmQ1YjFhZTMgPSAkKCc8ZGl2IGlkPSJodG1sXzFlNjI2ZWVlNGFkOTQ5OTRhY2Y0ODE5Y2JkNWIxYWUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MzE0OGM0ZDM1NjY0NGM0OTE3NGQzMmM5MDk5YmU2ZS5zZXRDb250ZW50KGh0bWxfMWU2MjZlZWU0YWQ5NDk5NGFjZjQ4MTljYmQ1YjFhZTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wOWIwZDJkOTAzOTA0ODAxYmYzMGQxZDliMjYyMGFhMC5iaW5kUG9wdXAocG9wdXBfNzMxNDhjNGQzNTY2NDRjNDkxNzRkMzJjOTA5OWJlNmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGNmMmYwYmQ5ZTY3NGNkMGJiODIxYThhOWFlN2MyNGQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZjJjMmVlYjNiMTI0MDI5YWJmMjVlNjA2NjAxN2E4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MDllZmQwMjlkYTY0OTJmYmIwZTJjZTQzNmRjYTdlYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDA5ZWZkMDI5ZGE2NDkyZmJiMGUyY2U0MzZkY2E3ZWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZjJjMmVlYjNiMTI0MDI5YWJmMjVlNjA2NjAxN2E4ZC5zZXRDb250ZW50KGh0bWxfNDA5ZWZkMDI5ZGE2NDkyZmJiMGUyY2U0MzZkY2E3ZWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kY2YyZjBiZDllNjc0Y2QwYmI4MjFhOGE5YWU3YzI0ZC5iaW5kUG9wdXAocG9wdXBfMWYyYzJlZWIzYjEyNDAyOWFiZjI1ZTYwNjYwMTdhOGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmNjNWExM2Y3MDNmNGZlNGExMTdjYmY2N2U0MjFjN2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTk0NGI1ZmEwNzFmNDMyNTg0MDZhYjdkYzYwNzBkZDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmI3NjVkMjMzMWQ4NDQ3NDg0ZWM5NzQ5YWNlMjZlNzUgPSAkKCc8ZGl2IGlkPSJodG1sXzZiNzY1ZDIzMzFkODQ0NzQ4NGVjOTc0OWFjZTI2ZTc1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xOTQ0YjVmYTA3MWY0MzI1ODQwNmFiN2RjNjA3MGRkNy5zZXRDb250ZW50KGh0bWxfNmI3NjVkMjMzMWQ4NDQ3NDg0ZWM5NzQ5YWNlMjZlNzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yY2M1YTEzZjcwM2Y0ZmU0YTExN2NiZjY3ZTQyMWM3YS5iaW5kUG9wdXAocG9wdXBfMTk0NGI1ZmEwNzFmNDMyNTg0MDZhYjdkYzYwNzBkZDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzdmMTk4NzY0YmZkNDcxOWEyODFmZDY1MmYyNDJjZTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzZjNDEwMWEwODk2NDI1Zjk5MzVlMjJkNGU4YTg1YWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTE3ZDk1ZGU2ZjU1NGQ5YjgwOGZmOTU5MTY0NWRlZmUgPSAkKCc8ZGl2IGlkPSJodG1sXzkxN2Q5NWRlNmY1NTRkOWI4MDhmZjk1OTE2NDVkZWZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzZjNDEwMWEwODk2NDI1Zjk5MzVlMjJkNGU4YTg1YWYuc2V0Q29udGVudChodG1sXzkxN2Q5NWRlNmY1NTRkOWI4MDhmZjk1OTE2NDVkZWZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzdmMTk4NzY0YmZkNDcxOWEyODFmZDY1MmYyNDJjZTQuYmluZFBvcHVwKHBvcHVwXzM2YzQxMDFhMDg5NjQyNWY5OTM1ZTIyZDRlOGE4NWFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY4YWUxMzkxOTAyMjQ0ZTZhOTFmZmMyMjVjZWY0YzJiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI3MDA1MzE5NjI5OTk1LC0xMjIuNDAzNDA4NjY5MTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGEyZmRmNThmZjllNGU3ZWI4ZDdmMzVmNGE3NjQxYTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTRjMzk3MDU2N2I0NGZlMTg4MGY0OTI0NTVmNDMwNGIgPSAkKCc8ZGl2IGlkPSJodG1sX2U0YzM5NzA1NjdiNDRmZTE4ODBmNDkyNDU1ZjQzMDRiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGEyZmRmNThmZjllNGU3ZWI4ZDdmMzVmNGE3NjQxYTguc2V0Q29udGVudChodG1sX2U0YzM5NzA1NjdiNDRmZTE4ODBmNDkyNDU1ZjQzMDRiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjhhZTEzOTE5MDIyNDRlNmE5MWZmYzIyNWNlZjRjMmIuYmluZFBvcHVwKHBvcHVwX2RhMmZkZjU4ZmY5ZTRlN2ViOGQ3ZjM1ZjRhNzY0MWE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZmYzFhYjA5OGVlYTRhMzdhNTZkNTkwOGFhZjYwMGFkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzN2I3MjVlMjVlZTQ4ZTViMTVlNDcyYzc3MWM3NzY0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIxYzc3NjE1YWU2OTRhOWM4ZDE1YzU5MTRmMDBhY2JhID0gJCgnPGRpdiBpZD0iaHRtbF8yMWM3NzYxNWFlNjk0YTljOGQxNWM1OTE0ZjAwYWNiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MzdiNzI1ZTI1ZWU0OGU1YjE1ZTQ3MmM3NzFjNzc2NC5zZXRDb250ZW50KGh0bWxfMjFjNzc2MTVhZTY5NGE5YzhkMTVjNTkxNGYwMGFjYmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZmMxYWIwOThlZWE0YTM3YTU2ZDU5MDhhYWY2MDBhZC5iaW5kUG9wdXAocG9wdXBfOTM3YjcyNWUyNWVlNDhlNWIxNWU0NzJjNzcxYzc3NjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjc3YmFkZmI3OGZiNGYzOTlhN2QwNGU4MGY3MDQzYWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNzczMTdiMjBiNGY0NzczYWE4MjUzMGE3OWY5ZDdlZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YmQ4MWI3MzhmMGQ0NDA1YTA4NzNjODBkNjkyZGFjNiA9ICQoJzxkaXYgaWQ9Imh0bWxfOWJkODFiNzM4ZjBkNDQwNWEwODczYzgwZDY5MmRhYzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTc3MzE3YjIwYjRmNDc3M2FhODI1MzBhNzlmOWQ3ZWQuc2V0Q29udGVudChodG1sXzliZDgxYjczOGYwZDQ0MDVhMDg3M2M4MGQ2OTJkYWM2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjc3YmFkZmI3OGZiNGYzOTlhN2QwNGU4MGY3MDQzYWIuYmluZFBvcHVwKHBvcHVwX2E3NzMxN2IyMGI0ZjQ3NzNhYTgyNTMwYTc5ZjlkN2VkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RiZTBiOTkyYzJmOTQ0MzlhY2ZiZDBiYmVmOWFjZDI3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0MDQxODM4NTA0MSwtMTIyLjQxNDM3MDYyNzQ5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I0ZjQ4ZGE1MzVjZDQ2YjI4NTViNzJhNjNlMmYyNmM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2EzM2M0OTVjNzE1YjRkZjZiNmVjN2QyYWQwNzJhNmFhID0gJCgnPGRpdiBpZD0iaHRtbF9hMzNjNDk1YzcxNWI0ZGY2YjZlYzdkMmFkMDcyYTZhYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I0ZjQ4ZGE1MzVjZDQ2YjI4NTViNzJhNjNlMmYyNmM2LnNldENvbnRlbnQoaHRtbF9hMzNjNDk1YzcxNWI0ZGY2YjZlYzdkMmFkMDcyYTZhYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RiZTBiOTkyYzJmOTQ0MzlhY2ZiZDBiYmVmOWFjZDI3LmJpbmRQb3B1cChwb3B1cF9iNGY0OGRhNTM1Y2Q0NmIyODU1YjcyYTYzZTJmMjZjNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83NDE5MDg0Mzg4NjI0YTAzODg0NGFmMmQyODNjZTIyYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODg0MzllNmU4YmE2NDdlY2IxNzg3ZjI2ZmU1ODI5MzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDFhYWQ2ZTU1YzM5NDVjNjkzZDA2NDI1Nzg2Y2Q1ZmEgPSAkKCc8ZGl2IGlkPSJodG1sX2QxYWFkNmU1NWMzOTQ1YzY5M2QwNjQyNTc4NmNkNWZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ODQzOWU2ZThiYTY0N2VjYjE3ODdmMjZmZTU4MjkzNi5zZXRDb250ZW50KGh0bWxfZDFhYWQ2ZTU1YzM5NDVjNjkzZDA2NDI1Nzg2Y2Q1ZmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NDE5MDg0Mzg4NjI0YTAzODg0NGFmMmQyODNjZTIyYS5iaW5kUG9wdXAocG9wdXBfODg0MzllNmU4YmE2NDdlY2IxNzg3ZjI2ZmU1ODI5MzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmRlYWVjZTQxMTk3NDlkNzlmNGJhNTBiZjUyMDk2YmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkwNWUxNWZiNjk0NTQxYjY5OWZiMDMxYmQ2MTJjMzhjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NiNDBiZTVlZDNjZTQwNDM4ZTZiZGU3OTg2ZTA5M2VhID0gJCgnPGRpdiBpZD0iaHRtbF9jYjQwYmU1ZWQzY2U0MDQzOGU2YmRlNzk4NmUwOTNlYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkwNWUxNWZiNjk0NTQxYjY5OWZiMDMxYmQ2MTJjMzhjLnNldENvbnRlbnQoaHRtbF9jYjQwYmU1ZWQzY2U0MDQzOGU2YmRlNzk4NmUwOTNlYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZkZWFlY2U0MTE5NzQ5ZDc5ZjRiYTUwYmY1MjA5NmJlLmJpbmRQb3B1cChwb3B1cF85MDVlMTVmYjY5NDU0MWI2OTlmYjAzMWJkNjEyYzM4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNjU0MGJkNWU0ODY0ZGJkYWQ3YTE3OThhNzhhNTgxMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGMzNzU5OTRhYWYxNGFhMmJkMmRlOTdiNDQxMzUyODQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDM5NGYzNDE5OTA3NDA0N2JkMDhkZmFhMzliNzdmNWIgPSAkKCc8ZGl2IGlkPSJodG1sXzAzOTRmMzQxOTkwNzQwNDdiZDA4ZGZhYTM5Yjc3ZjViIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGMzNzU5OTRhYWYxNGFhMmJkMmRlOTdiNDQxMzUyODQuc2V0Q29udGVudChodG1sXzAzOTRmMzQxOTkwNzQwNDdiZDA4ZGZhYTM5Yjc3ZjViKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTY1NDBiZDVlNDg2NGRiZGFkN2ExNzk4YTc4YTU4MTMuYmluZFBvcHVwKHBvcHVwXzhjMzc1OTk0YWFmMTRhYTJiZDJkZTk3YjQ0MTM1Mjg0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I0ZDFmMjIwNDZjMDRhYjRhYzcyODFhYThlYjRkMWQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RkYmI1OTZjMDc3ZDQxNmU4MjQ5YTM2OGUzMjY3MDhjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlY2E4ZDNlZmQ0MjQ5ZjlhYWI3ZjJmYmFiNDA4MjhjID0gJCgnPGRpdiBpZD0iaHRtbF9kZWNhOGQzZWZkNDI0OWY5YWFiN2YyZmJhYjQwODI4YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGRiYjU5NmMwNzdkNDE2ZTgyNDlhMzY4ZTMyNjcwOGMuc2V0Q29udGVudChodG1sX2RlY2E4ZDNlZmQ0MjQ5ZjlhYWI3ZjJmYmFiNDA4MjhjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjRkMWYyMjA0NmMwNGFiNGFjNzI4MWFhOGViNGQxZDguYmluZFBvcHVwKHBvcHVwX2RkYmI1OTZjMDc3ZDQxNmU4MjQ5YTM2OGUzMjY3MDhjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE0MzUyOGY2ZWY0ODQwNjI4YWU0YWIzZDMzMjYxODBmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU2ZTkyZjJkMDg2ZTRlNDc5ZmZlMTIzNGIxNWViMWY1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIzZjI1OGEyMmY2NzQzMDM5NzQ2YjBmYWQwYzYzNTVkID0gJCgnPGRpdiBpZD0iaHRtbF8yM2YyNThhMjJmNjc0MzAzOTc0NmIwZmFkMGM2MzU1ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU2ZTkyZjJkMDg2ZTRlNDc5ZmZlMTIzNGIxNWViMWY1LnNldENvbnRlbnQoaHRtbF8yM2YyNThhMjJmNjc0MzAzOTc0NmIwZmFkMGM2MzU1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE0MzUyOGY2ZWY0ODQwNjI4YWU0YWIzZDMzMjYxODBmLmJpbmRQb3B1cChwb3B1cF81NmU5MmYyZDA4NmU0ZTQ3OWZmZTEyMzRiMTVlYjFmNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYjBlZDVmZGNmNjY0ZjRlOWRlMzA5MWZlN2RiNjc2NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MTE1NGMxODk0NWQ0YjI5ODVkYzBmYTNkMDA5MjkxZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYmI0ZWM0OWExY2E0MDc0YWY4ZjQ2ZDZiNDM4ODE1YSA9ICQoJzxkaXYgaWQ9Imh0bWxfZmJiNGVjNDlhMWNhNDA3NGFmOGY0NmQ2YjQzODgxNWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MTE1NGMxODk0NWQ0YjI5ODVkYzBmYTNkMDA5MjkxZi5zZXRDb250ZW50KGh0bWxfZmJiNGVjNDlhMWNhNDA3NGFmOGY0NmQ2YjQzODgxNWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wYjBlZDVmZGNmNjY0ZjRlOWRlMzA5MWZlN2RiNjc2Ny5iaW5kUG9wdXAocG9wdXBfOTExNTRjMTg5NDVkNGIyOTg1ZGMwZmEzZDAwOTI5MWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjIzMTUyM2IyZGYwNDQzNWJlMDIwNTkzM2Y1MmQ5YjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWJlNjk4ZTdlYTQxNDFlNjg0NGQ4MmVkZWIyMmZlMzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTVlNzQyMTA0ZjY1NDU5NWI1NWQ0MDNiMzg2NmNjZDIgPSAkKCc8ZGl2IGlkPSJodG1sXzU1ZTc0MjEwNGY2NTQ1OTViNTVkNDAzYjM4NjZjY2QyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWJlNjk4ZTdlYTQxNDFlNjg0NGQ4MmVkZWIyMmZlMzIuc2V0Q29udGVudChodG1sXzU1ZTc0MjEwNGY2NTQ1OTViNTVkNDAzYjM4NjZjY2QyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjIzMTUyM2IyZGYwNDQzNWJlMDIwNTkzM2Y1MmQ5YjkuYmluZFBvcHVwKHBvcHVwXzViZTY5OGU3ZWE0MTQxZTY4NDRkODJlZGViMjJmZTMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JhYTdmNjhjNmNmNTRjOGU5NTU2Y2JiNjczZDM2NDg2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTNjNjNlNzFlYzk2NGZkZGIzMTg1MTIwYTJmNThkYWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTFhOGRhOTk0YWMxNGMwNmFmZmNmYWIzYzk0NDllZjYgPSAkKCc8ZGl2IGlkPSJodG1sX2ExYThkYTk5NGFjMTRjMDZhZmZjZmFiM2M5NDQ5ZWY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzEzYzYzZTcxZWM5NjRmZGRiMzE4NTEyMGEyZjU4ZGFlLnNldENvbnRlbnQoaHRtbF9hMWE4ZGE5OTRhYzE0YzA2YWZmY2ZhYjNjOTQ0OWVmNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JhYTdmNjhjNmNmNTRjOGU5NTU2Y2JiNjczZDM2NDg2LmJpbmRQb3B1cChwb3B1cF8xM2M2M2U3MWVjOTY0ZmRkYjMxODUxMjBhMmY1OGRhZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iZTY0YzMzMjYxY2Q0ZmQxYmNhZDY4ZWU4MmIyMzA5MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NjNiMDhmMzA4ODQ0ODFiOWJjODMyMGQwM2IwYjgxNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80OGQ0Yjg3NGM3NjY0M2RjYjE4NmJiMGRhYThjMmRkZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNDhkNGI4NzRjNzY2NDNkY2IxODZiYjBkYWE4YzJkZGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTYzYjA4ZjMwODg0NDgxYjliYzgzMjBkMDNiMGI4MTcuc2V0Q29udGVudChodG1sXzQ4ZDRiODc0Yzc2NjQzZGNiMTg2YmIwZGFhOGMyZGRkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmU2NGMzMzI2MWNkNGZkMWJjYWQ2OGVlODJiMjMwOTIuYmluZFBvcHVwKHBvcHVwXzU2M2IwOGYzMDg4NDQ4MWI5YmM4MzIwZDAzYjBiODE3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UyYzVlZGYxYWM3NjQzYTFiOTZhOTJjODIyMGNlOGUwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODViNTk1YWZhODY2NGY3NzgwNTc2NzViMGYwMTE4NzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmZiYTE0Njc4ZWM1NGUxNjlkOGM5MDg5Njc5YWNlZDcgPSAkKCc8ZGl2IGlkPSJodG1sX2ZmYmExNDY3OGVjNTRlMTY5ZDhjOTA4OTY3OWFjZWQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODViNTk1YWZhODY2NGY3NzgwNTc2NzViMGYwMTE4NzQuc2V0Q29udGVudChodG1sX2ZmYmExNDY3OGVjNTRlMTY5ZDhjOTA4OTY3OWFjZWQ3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTJjNWVkZjFhYzc2NDNhMWI5NmE5MmM4MjIwY2U4ZTAuYmluZFBvcHVwKHBvcHVwXzg1YjU5NWFmYTg2NjRmNzc4MDU3Njc1YjBmMDExODc0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2EzNzg4ZWIwNDVkMzQ5OWZhYTYzNjQ3ZGY4ZDQ4YmVlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU0MmU0NGYyZDRmZTRjNzRhZjhlZDc1M2FiM2U3NjZhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgyMTkxYTcwMjVmOTRlZmM4MTI2NjgwZDUwM2Y0ODA3ID0gJCgnPGRpdiBpZD0iaHRtbF84MjE5MWE3MDI1Zjk0ZWZjODEyNjY4MGQ1MDNmNDgwNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UFJPU1RJVFVUSU9OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NDJlNDRmMmQ0ZmU0Yzc0YWY4ZWQ3NTNhYjNlNzY2YS5zZXRDb250ZW50KGh0bWxfODIxOTFhNzAyNWY5NGVmYzgxMjY2ODBkNTAzZjQ4MDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hMzc4OGViMDQ1ZDM0OTlmYWE2MzY0N2RmOGQ0OGJlZS5iaW5kUG9wdXAocG9wdXBfNTQyZTQ0ZjJkNGZlNGM3NGFmOGVkNzUzYWIzZTc2NmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTJjZTA3OWRjMWI3NGI4MWE0NWQ3NDQyZDA5OTY5MmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzg1MjMzNzc2MDMyLC0xMjIuNDAzNDY0MDgwMDMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWMxOGM0OTU1Njk1NGZiYTliNTZkMGRhYjhkMTBjMDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjRkNjU2YjZhMzM0NGYzMWEyOThmOWE1M2RjMTNhZDcgPSAkKCc8ZGl2IGlkPSJodG1sXzY0ZDY1NmI2YTMzNDRmMzFhMjk4ZjlhNTNkYzEzYWQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWMxOGM0OTU1Njk1NGZiYTliNTZkMGRhYjhkMTBjMDAuc2V0Q29udGVudChodG1sXzY0ZDY1NmI2YTMzNDRmMzFhMjk4ZjlhNTNkYzEzYWQ3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTJjZTA3OWRjMWI3NGI4MWE0NWQ3NDQyZDA5OTY5MmIuYmluZFBvcHVwKHBvcHVwXzFjMThjNDk1NTY5NTRmYmE5YjU2ZDBkYWI4ZDEwYzAwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhmYzE0ZDc3OGYwZDRjMjg5OGEwMGI1N2ViOWE4ZTk1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZDQ4MjE1MzU5NGQ0NDViODQ3NjRlMGRkMTIwMzdlMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mOTkyMjI4ZDAzMWY0MmJmOTA4MmU2N2UyYWQxNTMwNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZjk5MjIyOGQwMzFmNDJiZjkwODJlNjdlMmFkMTUzMDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2Q0ODIxNTM1OTRkNDQ1Yjg0NzY0ZTBkZDEyMDM3ZTMuc2V0Q29udGVudChodG1sX2Y5OTIyMjhkMDMxZjQyYmY5MDgyZTY3ZTJhZDE1MzA0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGZjMTRkNzc4ZjBkNGMyODk4YTAwYjU3ZWI5YThlOTUuYmluZFBvcHVwKHBvcHVwX2NkNDgyMTUzNTk0ZDQ0NWI4NDc2NGUwZGQxMjAzN2UzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I3MWYzYmNjNjYwMTRlOWRiYWY1MzUwMzdhOTUyN2M2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMDM4YTdlOTczZDA0MWUyYjgxMDNlOTQwZTc4MWQ3ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NDU2NjMyZjIwOGY0ZmIxYWI4ZjY2ZDhlMmY5NTkxMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDQ1NjYzMmYyMDhmNGZiMWFiOGY2NmQ4ZTJmOTU5MTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UwMzhhN2U5NzNkMDQxZTJiODEwM2U5NDBlNzgxZDdlLnNldENvbnRlbnQoaHRtbF80NDU2NjMyZjIwOGY0ZmIxYWI4ZjY2ZDhlMmY5NTkxMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I3MWYzYmNjNjYwMTRlOWRiYWY1MzUwMzdhOTUyN2M2LmJpbmRQb3B1cChwb3B1cF9lMDM4YTdlOTczZDA0MWUyYjgxMDNlOTQwZTc4MWQ3ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MTExZTA5NjAyZTM0NmE2OGRjMGU1ODBlZTJiY2ZjMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2RkMjI1Mzk4NTg1NDFhZGJmZmQ5ZWIyYzVkODFhZjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmU4MTAyMmQ0ZGNlNDIwZGJmNThlMzdhYTY0MjQ5ODQgPSAkKCc8ZGl2IGlkPSJodG1sXzJlODEwMjJkNGRjZTQyMGRiZjU4ZTM3YWE2NDI0OTg0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2RkMjI1Mzk4NTg1NDFhZGJmZmQ5ZWIyYzVkODFhZjYuc2V0Q29udGVudChodG1sXzJlODEwMjJkNGRjZTQyMGRiZjU4ZTM3YWE2NDI0OTg0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDExMWUwOTYwMmUzNDZhNjhkYzBlNTgwZWUyYmNmYzEuYmluZFBvcHVwKHBvcHVwXzdkZDIyNTM5ODU4NTQxYWRiZmZkOWViMmM1ZDgxYWY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UzYTk2NjRjOWIzODRhYjVhYjYyYjEwNTg4ZDVhNDZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmEzZjY2NzY2YjUwNDU0NmIwMWYyZDAwYmIyZjA4MWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGU0ZGFlYjFmMWM1NGVjODgwNzk0NGZhMWZlOTZkOGUgPSAkKCc8ZGl2IGlkPSJodG1sXzRlNGRhZWIxZjFjNTRlYzg4MDc5NDRmYTFmZTk2ZDhlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYTNmNjY3NjZiNTA0NTQ2YjAxZjJkMDBiYjJmMDgxYi5zZXRDb250ZW50KGh0bWxfNGU0ZGFlYjFmMWM1NGVjODgwNzk0NGZhMWZlOTZkOGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lM2E5NjY0YzliMzg0YWI1YWI2MmIxMDU4OGQ1YTQ2ZS5iaW5kUG9wdXAocG9wdXBfYmEzZjY2NzY2YjUwNDU0NmIwMWYyZDAwYmIyZjA4MWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGJlMmM5YmM3NjcxNGM4OThkN2RmZDllZjkzNTc3OGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTMzYzE3NTU0ZTY1NGM0NjgzMmUxNGZkNTc1Yjg2ZWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTMzMjBlMTM1MDU3NDQ0ZmIwMzFhZmU5ZTBiOGU1ZGQgPSAkKCc8ZGl2IGlkPSJodG1sXzkzMzIwZTEzNTA1NzQ0NGZiMDMxYWZlOWUwYjhlNWRkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTMzYzE3NTU0ZTY1NGM0NjgzMmUxNGZkNTc1Yjg2ZWIuc2V0Q29udGVudChodG1sXzkzMzIwZTEzNTA1NzQ0NGZiMDMxYWZlOWUwYjhlNWRkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGJlMmM5YmM3NjcxNGM4OThkN2RmZDllZjkzNTc3OGUuYmluZFBvcHVwKHBvcHVwX2EzM2MxNzU1NGU2NTRjNDY4MzJlMTRmZDU3NWI4NmViKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA3NjgyNDFhYmJjNjRkY2Q5NjU1Yjg0ZjM3ODEzZjhlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MDA2NTMyNDM5MjA1LC0xMjIuMzk5ODAyMTQ1Nzk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTdhYWI5Y2MwOTg0NDUxYWE0OWViZDE2OTExMDQzMTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzVkNTAxM2RkMTc3NDZkOGFhNjZiYTkzZmUwNDVlMzggPSAkKCc8ZGl2IGlkPSJodG1sX2M1ZDUwMTNkZDE3NzQ2ZDhhYTY2YmE5M2ZlMDQ1ZTM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81N2FhYjljYzA5ODQ0NTFhYTQ5ZWJkMTY5MTEwNDMxMC5zZXRDb250ZW50KGh0bWxfYzVkNTAxM2RkMTc3NDZkOGFhNjZiYTkzZmUwNDVlMzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wNzY4MjQxYWJiYzY0ZGNkOTY1NWI4NGYzNzgxM2Y4ZS5iaW5kUG9wdXAocG9wdXBfNTdhYWI5Y2MwOTg0NDUxYWE0OWViZDE2OTExMDQzMTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzIwM2Q2ZGY0OTRlNDQzZDkzMWFkNzMwNWJlY2IyNTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMxNzI2OTc3MzczNjQyODA5ODQ1MzEzOWJiMWQ5NWNhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEzMGE4ODk3ODRmODRkMTE4OTA2YTc0OTVkZGE2ZDUwID0gJCgnPGRpdiBpZD0iaHRtbF8xMzBhODg5Nzg0Zjg0ZDExODkwNmE3NDk1ZGRhNmQ1MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMTcyNjk3NzM3MzY0MjgwOTg0NTMxMzliYjFkOTVjYS5zZXRDb250ZW50KGh0bWxfMTMwYTg4OTc4NGY4NGQxMTg5MDZhNzQ5NWRkYTZkNTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MjAzZDZkZjQ5NGU0NDNkOTMxYWQ3MzA1YmVjYjI1Ny5iaW5kUG9wdXAocG9wdXBfMzE3MjY5NzczNzM2NDI4MDk4NDUzMTM5YmIxZDk1Y2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2MzZmMyMTkyMWEwNGJmZWE3ODYzNGE3N2EyZGFkMmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk1ZGIwMTkzZTgyMjRhMDlhMDZjY2E5YTgwZmE2YTdlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE1NDhmYjc3YzYwZDRkNmE4N2EwMGZmYTUxNjFjNTRjID0gJCgnPGRpdiBpZD0iaHRtbF8xNTQ4ZmI3N2M2MGQ0ZDZhODdhMDBmZmE1MTYxYzU0YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk1ZGIwMTkzZTgyMjRhMDlhMDZjY2E5YTgwZmE2YTdlLnNldENvbnRlbnQoaHRtbF8xNTQ4ZmI3N2M2MGQ0ZDZhODdhMDBmZmE1MTYxYzU0Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NjM2ZjMjE5MjFhMDRiZmVhNzg2MzRhNzdhMmRhZDJkLmJpbmRQb3B1cChwb3B1cF85NWRiMDE5M2U4MjI0YTA5YTA2Y2NhOWE4MGZhNmE3ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZGIzZDdmMGRmZTA0MGFjYmI1N2RjYzNhNmM5MmEyZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTNkNDM3NDg5YzNlNDhhNDg5ZjE2Zjk0OTJjYWYyNzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODUyMjAyNTZkNjdlNGIxMTk2ZmE5M2ViMDY5MGFhN2MgPSAkKCc8ZGl2IGlkPSJodG1sXzg1MjIwMjU2ZDY3ZTRiMTE5NmZhOTNlYjA2OTBhYTdjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTNkNDM3NDg5YzNlNDhhNDg5ZjE2Zjk0OTJjYWYyNzQuc2V0Q29udGVudChodG1sXzg1MjIwMjU2ZDY3ZTRiMTE5NmZhOTNlYjA2OTBhYTdjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNmRiM2Q3ZjBkZmUwNDBhY2JiNTdkY2MzYTZjOTJhMmUuYmluZFBvcHVwKHBvcHVwX2EzZDQzNzQ4OWMzZTQ4YTQ4OWYxNmY5NDkyY2FmMjc0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJiNzFlNjY5ZDUyMjQwZDY5NDE1MDM1Y2Q3M2ExYmM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDE1N2MzOWJlZGQ4NDNjMTk0N2Y0ZDQzMzI0NGRkZWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2E2ZjBmYjg0MTViNDIzYzhlNzhmMWFjM2EwNmQyNjIgPSAkKCc8ZGl2IGlkPSJodG1sXzNhNmYwZmI4NDE1YjQyM2M4ZTc4ZjFhYzNhMDZkMjYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMTU3YzM5YmVkZDg0M2MxOTQ3ZjRkNDMzMjQ0ZGRlZC5zZXRDb250ZW50KGh0bWxfM2E2ZjBmYjg0MTViNDIzYzhlNzhmMWFjM2EwNmQyNjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYjcxZTY2OWQ1MjI0MGQ2OTQxNTAzNWNkNzNhMWJjNC5iaW5kUG9wdXAocG9wdXBfMDE1N2MzOWJlZGQ4NDNjMTk0N2Y0ZDQzMzI0NGRkZWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGZjOGRlNTIxZGVmNGRhZTgxMWM3YzcxNjZlNTA1Y2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzJjNWUxM2Y3MDZkNDBkNWFjZGM4ODYzNGI2OGRiMDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTEyNjYzZTkwMGU2NGJkMjk3ODZhZTBkMTU1NjhkMTQgPSAkKCc8ZGl2IGlkPSJodG1sX2ExMjY2M2U5MDBlNjRiZDI5Nzg2YWUwZDE1NTY4ZDE0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzJjNWUxM2Y3MDZkNDBkNWFjZGM4ODYzNGI2OGRiMDAuc2V0Q29udGVudChodG1sX2ExMjY2M2U5MDBlNjRiZDI5Nzg2YWUwZDE1NTY4ZDE0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGZjOGRlNTIxZGVmNGRhZTgxMWM3YzcxNjZlNTA1Y2MuYmluZFBvcHVwKHBvcHVwXzcyYzVlMTNmNzA2ZDQwZDVhY2RjODg2MzRiNjhkYjAwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2E4ZWJkZTNlYzdjOTRlYTQ5MjU5YzExN2Q4OTgwMzQzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FjY2NhMDhjODQ1MDQ4YWVhMzg1ODg2NDY5MzFhMTBiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg2Mjc3MTYwMWM4ZjQ5NTY4ZmVjZDk1MzNhZTIxMzkxID0gJCgnPGRpdiBpZD0iaHRtbF84NjI3NzE2MDFjOGY0OTU2OGZlY2Q5NTMzYWUyMTM5MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hY2NjYTA4Yzg0NTA0OGFlYTM4NTg4NjQ2OTMxYTEwYi5zZXRDb250ZW50KGh0bWxfODYyNzcxNjAxYzhmNDk1NjhmZWNkOTUzM2FlMjEzOTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hOGViZGUzZWM3Yzk0ZWE0OTI1OWMxMTdkODk4MDM0My5iaW5kUG9wdXAocG9wdXBfYWNjY2EwOGM4NDUwNDhhZWEzODU4ODY0NjkzMWExMGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2JlZjE3ZWJhM2I1NDQyNTgwZWQxYWQ1ZDUwYzNmZjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzAxMzJiNWE4ZTA5MTQ3NDY5NTgxZjI3YTE3OTY3ZmUxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NmYmEwMzNmODgxMDQ5Njg5MDFkOGM3NTBmOGU5NjNhID0gJCgnPGRpdiBpZD0iaHRtbF9jZmJhMDMzZjg4MTA0OTY4OTAxZDhjNzUwZjhlOTYzYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMTMyYjVhOGUwOTE0NzQ2OTU4MWYyN2ExNzk2N2ZlMS5zZXRDb250ZW50KGh0bWxfY2ZiYTAzM2Y4ODEwNDk2ODkwMWQ4Yzc1MGY4ZTk2M2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jYmVmMTdlYmEzYjU0NDI1ODBlZDFhZDVkNTBjM2ZmNS5iaW5kUG9wdXAocG9wdXBfMDEzMmI1YThlMDkxNDc0Njk1ODFmMjdhMTc5NjdmZTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzYwYmUwNWZjYmUyNDIwZmJiMDRiN2I0ZWJhOTkwZDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZTgzZGQ5NWMwNzQ0MzJhYjdiYmUwNzhhMTI4ZWEwMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NDRjNDFhYzdkYzI0ODlmODhkOWM3MjMxY2Y1ZGE1MyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTQ0YzQxYWM3ZGMyNDg5Zjg4ZDljNzIzMWNmNWRhNTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZTgzZGQ5NWMwNzQ0MzJhYjdiYmUwNzhhMTI4ZWEwMy5zZXRDb250ZW50KGh0bWxfNTQ0YzQxYWM3ZGMyNDg5Zjg4ZDljNzIzMWNmNWRhNTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NjBiZTA1ZmNiZTI0MjBmYmIwNGI3YjRlYmE5OTBkMC5iaW5kUG9wdXAocG9wdXBfOWU4M2RkOTVjMDc0NDMyYWI3YmJlMDc4YTEyOGVhMDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmIyODYzOGE3ZDViNDBjOGJhYTM2Mzk0NWE0ZDBjZmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODk1NzEwMjU1ODYzLC0xMjIuNDAyMTYzNzEzNjE4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGMwMDA1OTU0OGVkNGJkZWFjYjQ5ZTU2ZGYxMTk4NGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzQzN2YyN2MyOWM5NGE4MWJhZDQzZDM1NTE0Y2VkMmQgPSAkKCc8ZGl2IGlkPSJodG1sXzc0MzdmMjdjMjljOTRhODFiYWQ0M2QzNTUxNGNlZDJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVOS0VOTkVTUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGMwMDA1OTU0OGVkNGJkZWFjYjQ5ZTU2ZGYxMTk4NGEuc2V0Q29udGVudChodG1sXzc0MzdmMjdjMjljOTRhODFiYWQ0M2QzNTUxNGNlZDJkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmIyODYzOGE3ZDViNDBjOGJhYTM2Mzk0NWE0ZDBjZmYuYmluZFBvcHVwKHBvcHVwXzBjMDAwNTk1NDhlZDRiZGVhY2I0OWU1NmRmMTE5ODRhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI0OTMzNGUxMTQwYzRhMjQ4YWYxMWFhYWM4NDI1ZGZhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkwZTBiMjNhZGJiOTQ1ZmNiOTMzMDU5ODI0ZDJkOGM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEzZTZlZDI1NDhhMzRiOWI4OTdjMjU2MGU5ZmNjNjQ5ID0gJCgnPGRpdiBpZD0iaHRtbF8xM2U2ZWQyNTQ4YTM0YjliODk3YzI1NjBlOWZjYzY0OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkwZTBiMjNhZGJiOTQ1ZmNiOTMzMDU5ODI0ZDJkOGM4LnNldENvbnRlbnQoaHRtbF8xM2U2ZWQyNTQ4YTM0YjliODk3YzI1NjBlOWZjYzY0OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI0OTMzNGUxMTQwYzRhMjQ4YWYxMWFhYWM4NDI1ZGZhLmJpbmRQb3B1cChwb3B1cF85MGUwYjIzYWRiYjk0NWZjYjkzMzA1OTgyNGQyZDhjOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NTkxYmY3OWYxZDY0MTk5YWFmNDZlMjc5NGExYThiMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTgzNWMzZDc0ODM4NGRlZjg4MDY2Y2M0Y2M1NDczY2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWJmNzkwMmJjZmMyNDcyMWE4ZTFkZGYwNzU3ZTUyOTMgPSAkKCc8ZGl2IGlkPSJodG1sX2ViZjc5MDJiY2ZjMjQ3MjFhOGUxZGRmMDc1N2U1MjkzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE4MzVjM2Q3NDgzODRkZWY4ODA2NmNjNGNjNTQ3M2NkLnNldENvbnRlbnQoaHRtbF9lYmY3OTAyYmNmYzI0NzIxYThlMWRkZjA3NTdlNTI5Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ1OTFiZjc5ZjFkNjQxOTlhYWY0NmUyNzk0YTFhOGIyLmJpbmRQb3B1cChwb3B1cF8xODM1YzNkNzQ4Mzg0ZGVmODgwNjZjYzRjYzU0NzNjZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MDQ3MjZiMDc4MzI0ZTlkOWIwZWViOWI1MzQ0ZWJkMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZDdkOTM5MzQ0NGM0YzAwOTk3NTY4YTM5N2IxY2JiNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMjcyYmUzZjgwZGE0NjBkYTA4Zjc4ODY0MjMwZWM5NCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjI3MmJlM2Y4MGRhNDYwZGEwOGY3ODg2NDIzMGVjOTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZDdkOTM5MzQ0NGM0YzAwOTk3NTY4YTM5N2IxY2JiNy5zZXRDb250ZW50KGh0bWxfYjI3MmJlM2Y4MGRhNDYwZGEwOGY3ODg2NDIzMGVjOTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82MDQ3MjZiMDc4MzI0ZTlkOWIwZWViOWI1MzQ0ZWJkMS5iaW5kUG9wdXAocG9wdXBfY2Q3ZDkzOTM0NDRjNGMwMDk5NzU2OGEzOTdiMWNiYjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzhjM2RiYWFmMDJjNDM0OThkOTBlNTgwMzAzZTUyYmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNTYwNjFlMDcyMTM0ODZiYjVlZjE0Y2NjYWQ4NWQ3YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNTVkNGQyYjY0ODQ0MDVlOTk3ZmQ4MTFhODcwZTRhMyA9ICQoJzxkaXYgaWQ9Imh0bWxfMzU1ZDRkMmI2NDg0NDA1ZTk5N2ZkODExYTg3MGU0YTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjU2MDYxZTA3MjEzNDg2YmI1ZWYxNGNjY2FkODVkN2Iuc2V0Q29udGVudChodG1sXzM1NWQ0ZDJiNjQ4NDQwNWU5OTdmZDgxMWE4NzBlNGEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzhjM2RiYWFmMDJjNDM0OThkOTBlNTgwMzAzZTUyYmIuYmluZFBvcHVwKHBvcHVwXzI1NjA2MWUwNzIxMzQ4NmJiNWVmMTRjY2NhZDg1ZDdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2YxYmNkMzEyZDBjODRkNmI4NTA4MTY2YTBmOTNhM2FkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYThiZWMyOGQ3YjIyNDcwMzg3OTk3ZDg5N2U4OGMyNDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTRhMTVlZDY5NzY5NGY1Yjk1ZTViODVhZWVlOTM2NjAgPSAkKCc8ZGl2IGlkPSJodG1sXzE0YTE1ZWQ2OTc2OTRmNWI5NWU1Yjg1YWVlZTkzNjYwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E4YmVjMjhkN2IyMjQ3MDM4Nzk5N2Q4OTdlODhjMjQwLnNldENvbnRlbnQoaHRtbF8xNGExNWVkNjk3Njk0ZjViOTVlNWI4NWFlZWU5MzY2MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2YxYmNkMzEyZDBjODRkNmI4NTA4MTY2YTBmOTNhM2FkLmJpbmRQb3B1cChwb3B1cF9hOGJlYzI4ZDdiMjI0NzAzODc5OTdkODk3ZTg4YzI0MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MzJkZjhhNTUyZjA0MDNiOTk1NDBjODA2YTBlZGE4ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTk5ODgzMjM3OTc5NiwtMTIyLjQxMTc0NzM3MTkyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdhYTI0MWRhZTc3MDQ3NjRiNjI3NDFlZDk0NzdiZGQxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UwYWJjNjc3M2EwZDQxNzliYjkzYjQzOGQyYjAyN2I4ID0gJCgnPGRpdiBpZD0iaHRtbF9lMGFiYzY3NzNhMGQ0MTc5YmI5M2I0MzhkMmIwMjdiOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdhYTI0MWRhZTc3MDQ3NjRiNjI3NDFlZDk0NzdiZGQxLnNldENvbnRlbnQoaHRtbF9lMGFiYzY3NzNhMGQ0MTc5YmI5M2I0MzhkMmIwMjdiOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzkzMmRmOGE1NTJmMDQwM2I5OTU0MGM4MDZhMGVkYThmLmJpbmRQb3B1cChwb3B1cF83YWEyNDFkYWU3NzA0NzY0YjYyNzQxZWQ5NDc3YmRkMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NGVmZTExODFhNzU0MGJlODRlN2M5ZWI1ZmVmNTQzMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FiNTA3NTNmZjc3NDQ5OTdhZDdiMGYyNjAxMjgwMTc5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M5MmM4NDAxZTEyMzQ4M2FhNDMyOGNlODU0Yzk5MzA5ID0gJCgnPGRpdiBpZD0iaHRtbF9jOTJjODQwMWUxMjM0ODNhYTQzMjhjZTg1NGM5OTMwOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FiNTA3NTNmZjc3NDQ5OTdhZDdiMGYyNjAxMjgwMTc5LnNldENvbnRlbnQoaHRtbF9jOTJjODQwMWUxMjM0ODNhYTQzMjhjZTg1NGM5OTMwOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ0ZWZlMTE4MWE3NTQwYmU4NGU3YzllYjVmZWY1NDMxLmJpbmRQb3B1cChwb3B1cF9hYjUwNzUzZmY3NzQ0OTk3YWQ3YjBmMjYwMTI4MDE3OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lOWY4NjViNDY5YzU0YTQ2OGIwNDI0NGU2YzQxNmIwNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlhZTAwZjg2MDI4MDQ5MTNhZmFiZWIyZmE2NjFhYzNmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAwMGFhMzA2ZTEwNjRkM2Y5MzY3ODJhYjU0NmY1ODMxID0gJCgnPGRpdiBpZD0iaHRtbF8wMDBhYTMwNmUxMDY0ZDNmOTM2NzgyYWI1NDZmNTgzMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YWUwMGY4NjAyODA0OTEzYWZhYmViMmZhNjYxYWMzZi5zZXRDb250ZW50KGh0bWxfMDAwYWEzMDZlMTA2NGQzZjkzNjc4MmFiNTQ2ZjU4MzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lOWY4NjViNDY5YzU0YTQ2OGIwNDI0NGU2YzQxNmIwNi5iaW5kUG9wdXAocG9wdXBfOWFlMDBmODYwMjgwNDkxM2FmYWJlYjJmYTY2MWFjM2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2MzNTU2ZjFmY2JiNDAxNTk0ZjliNjE3MDRlYmQwYmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYzg2NThkNjA2MTg0NmQ0OGIwODYxOWJkMWZlMWY3NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mODM0ODhkMWZiOGU0Yzk2OTNjMzIwOWU0YTFmZTE5MyA9ICQoJzxkaXYgaWQ9Imh0bWxfZjgzNDg4ZDFmYjhlNGM5NjkzYzMyMDllNGExZmUxOTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYzg2NThkNjA2MTg0NmQ0OGIwODYxOWJkMWZlMWY3NC5zZXRDb250ZW50KGh0bWxfZjgzNDg4ZDFmYjhlNGM5NjkzYzMyMDllNGExZmUxOTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83YzM1NTZmMWZjYmI0MDE1OTRmOWI2MTcwNGViZDBiYi5iaW5kUG9wdXAocG9wdXBfMWM4NjU4ZDYwNjE4NDZkNDhiMDg2MTliZDFmZTFmNzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGFlZmQxNzg0ZjMzNDRlNDgzYjY5MjI2ZDhjMTZjZDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfMTI0OWE4ZjJmNGFjNDgyZmFmMDhiMjZhMDg3NDZjNjMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmY0NTZhOWUyN2U2NDY4OWFkODRmODc2ZjY1MzVjMzMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjIzZmU0MWY5NjkxNDJiMWIwMmMzZWNlNzhlYTFhZDIgPSAkKCc8ZGl2IGlkPSJodG1sXzIyM2ZlNDFmOTY5MTQyYjFiMDJjM2VjZTc4ZWExYWQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZjQ1NmE5ZTI3ZTY0Njg5YWQ4NGY4NzZmNjUzNWMzMy5zZXRDb250ZW50KGh0bWxfMjIzZmU0MWY5NjkxNDJiMWIwMmMzZWNlNzhlYTFhZDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wYWVmZDE3ODRmMzM0NGU0ODNiNjkyMjZkOGMxNmNkNS5iaW5kUG9wdXAocG9wdXBfMmY0NTZhOWUyN2U2NDY4OWFkODRmODc2ZjY1MzVjMzMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjgwYTNlMmJjOWYyNGYyZmE4NmNjZjA3ZDExNTljYjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYTM4YTVlNDY2ZmI0MTVhYTkwYmJmNzAyODI4N2U1ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wOWQ4ZWZkYTkxOWE0NDkxODI2MGIzZGM1ZTUwNGViYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDlkOGVmZGE5MTlhNDQ5MTgyNjBiM2RjNWU1MDRlYmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYTM4YTVlNDY2ZmI0MTVhYTkwYmJmNzAyODI4N2U1ZS5zZXRDb250ZW50KGh0bWxfMDlkOGVmZGE5MTlhNDQ5MTgyNjBiM2RjNWU1MDRlYmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mODBhM2UyYmM5ZjI0ZjJmYTg2Y2NmMDdkMTE1OWNiNS5iaW5kUG9wdXAocG9wdXBfYWEzOGE1ZTQ2NmZiNDE1YWE5MGJiZjcwMjgyODdlNWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmYyM2JkYjA4M2U0NDUwMjkxYjI4MWRiZTc2Zjc1YjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njg1MzYwMTIzNTgzLC0xMjIuNDE1NjE2MzM4MzE5OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NjU1YTQ1YWM3NGU0YTQxYjVhZDY5MDljMjM1Nzg4NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMTdjOGZiMDc4NTU0NTEzOTVmNTlmNTI5NzlhOGQyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTE3YzhmYjA3ODU1NDUxMzk1ZjU5ZjUyOTc5YThkMjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTY1NWE0NWFjNzRlNGE0MWI1YWQ2OTA5YzIzNTc4ODcuc2V0Q29udGVudChodG1sX2ExN2M4ZmIwNzg1NTQ1MTM5NWY1OWY1Mjk3OWE4ZDI2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmYyM2JkYjA4M2U0NDUwMjkxYjI4MWRiZTc2Zjc1YjEuYmluZFBvcHVwKHBvcHVwXzk2NTVhNDVhYzc0ZTRhNDFiNWFkNjkwOWMyMzU3ODg3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VhZGYxZWQ3MDRiOTRkMmRhY2UxMzJkNGI2OTIzY2QwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYyZjllZjI1YmQ2MDRiZDI4OWFjMzQzMTgyMjExZGQ4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhiNGNhNjViNzRhNzQyM2Y4YWM0OGMwYjE2YWE4OGFlID0gJCgnPGRpdiBpZD0iaHRtbF84YjRjYTY1Yjc0YTc0MjNmOGFjNDhjMGIxNmFhODhhZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzYyZjllZjI1YmQ2MDRiZDI4OWFjMzQzMTgyMjExZGQ4LnNldENvbnRlbnQoaHRtbF84YjRjYTY1Yjc0YTc0MjNmOGFjNDhjMGIxNmFhODhhZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VhZGYxZWQ3MDRiOTRkMmRhY2UxMzJkNGI2OTIzY2QwLmJpbmRQb3B1cChwb3B1cF82MmY5ZWYyNWJkNjA0YmQyODlhYzM0MzE4MjIxMWRkOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hNTJjZDJhMWM5OWM0MzFmYmUxYzMzZTQ4NmVkYzljMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZTNjYTRhNGNiYmI0NmMyYWJkNThmM2UzY2Y0ZGU0YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYjg1NDA2YzJhMzM0NzRiOGNkMjVlMjE3NGY0ZWZhYSA9ICQoJzxkaXYgaWQ9Imh0bWxfYmI4NTQwNmMyYTMzNDc0YjhjZDI1ZTIxNzRmNGVmYWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RlM2NhNGE0Y2JiYjQ2YzJhYmQ1OGYzZTNjZjRkZTRiLnNldENvbnRlbnQoaHRtbF9iYjg1NDA2YzJhMzM0NzRiOGNkMjVlMjE3NGY0ZWZhYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E1MmNkMmExYzk5YzQzMWZiZTFjMzNlNDg2ZWRjOWMyLmJpbmRQb3B1cChwb3B1cF9kZTNjYTRhNGNiYmI0NmMyYWJkNThmM2UzY2Y0ZGU0Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZjM3ZGU1NGQ4NWE0ZjY1YWRjYzJlOGU3NjJlNDk3YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTI2ODE0NjkwODM5NiwtMTIyLjQ3MjcxNTc1OTYzMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzEyNDlhOGYyZjRhYzQ4MmZhZjA4YjI2YTA4NzQ2YzYzKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM4NGFkZTY0ZDNlNTQ0NWJhNGE0YmIxNGU3MDFiNzY3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAyMmNkNmY4MGViMTQ4OTI5MDliNjAzYjg0Zjc2ZWY2ID0gJCgnPGRpdiBpZD0iaHRtbF8wMjJjZDZmODBlYjE0ODkyOTA5YjYwM2I4NGY3NmVmNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzg0YWRlNjRkM2U1NDQ1YmE0YTRiYjE0ZTcwMWI3Njcuc2V0Q29udGVudChodG1sXzAyMmNkNmY4MGViMTQ4OTI5MDliNjAzYjg0Zjc2ZWY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGYzN2RlNTRkODVhNGY2NWFkY2MyZThlNzYyZTQ5N2EuYmluZFBvcHVwKHBvcHVwXzM4NGFkZTY0ZDNlNTQ0NWJhNGE0YmIxNGU3MDFiNzY3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8xMjQ5YThmMmY0YWM0ODJmYWYwOGIyNmEwODc0NmM2Myk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODk5ODhjMzc4MWRmNDcxMDlmODc0ZDE5MzhjYTM1MzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIxNGVlN2IwYzkyNTRlNDU4MTM0NzBhMDUyNWIwNmE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZWEyOWFlNjczMmQ0MzU2OTNiMjU2ZWQ1NDdlYTY1ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyOWIyZjNmYmFmOTQxYmY4YjkxM2Q2MGQ1MjA4ZTE1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYzk5YTE1Nzc3ZTY0YmFiOWMyMjMzOGQxMjc2MDA1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MmE3ZmQyYWJjYWM0M2MxOTVjYTEzMmQyYThiMDZmNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNmNzE0ZTZhY2ZmNDI2NTg3ODBiODMxNjQ1MDVhZDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTIyNDI1ZDc4ZmFkNGUxZDg1ZmI4Y2RlMTg5ZjcxNTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmMxMDEzZjk2YjczNDA2ODg5YmRhNTFkNDQwMDBmNjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMWE3NzY4YWU1M2E0YWIzOTMyMDc5OTM4NjlmMGVlMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNzA2YmUxODhjMmI0NTEzYWRlNDE3MDU0ZTZhMjgyZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjUzOGZlMWRiMzYzNDY3MTliYTVjYzg1ZjYwM2ZiNDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZGY3N2NlODIyOGI0YTAyOTA2ODlhNDRkMmU1OTJlMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZThlNTc3YTdkYTQ3NDQxZGE2NDQxNTI4ZDg3ZTFlZTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmI2NDhjMWQwOTgxNGVhYTgwMGM4M2U0ZDI5N2UxMmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk3MDJmY2ZlY2MxZjQ3MDlhNTQ4Y2M5ZjM0MzJiMGUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JkZDQ1N2FmNWY0NzQyM2ZhNjM5ZTg3NmUzYjc3NmM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTQxNTkyYmM1MjZmNGQ2OGFlYjQ3MmUwMTM0MWRjMTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMjc2YWNhMmU4NjA0NTM3OGU2MjJjYWQzNzcyYzE0OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUxYzkwNzU5YmI0ZDQ2Njk4ZDQ2YjkxNWE2YjE3MDQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRjNWE1MGUxMDRjODQwMzZiOTFiODgwNTY5ODZiYWNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjA2NDBlODkwNzAzNDdmNDlhNDJlNDBkOGViMjMwOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYwOWIwNDEzOWY0NjQxNjc5MzlkODBjZTE4NDcyMzkwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lY2M0YWRmYjRjZGQ0OGZlYjg4NzExZGM2ZDNjZGM2ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDczOWJhYzBiYWQ5NDVkNjhmMmU2ZDMyODRkZmQyNjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZjQ5MzZjNDQ3ZWE0ZjU0OWVkMjg5YWY5NDBkMzI5YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDExMjk3ODdkZmE4NDFjZmE5NjhlN2M5YzgxZDUxOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzJiOWI0ZjMyYzdiNDFjMTgzNTc4OWNkY2Q5ZDk1ZjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2QxOTBiMDg0Y2M1NDNhNzljZTdlNDUwMDIzZjBjZjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xNzYzNDA0NGE5NTg0NDYyYWU1OWE5Y2E1YTNjYmIyZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNmU2NDNkNzdhNDg0M2FmYWVkZGU0NGYwMTg2ZWU5ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhZjdiMzYyOTMwYzRlNmQ4YTEwZjU4Y2RjZTMyMmE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzExZjE1OWQwYWYxMzQxZTBhOTk5NmYyMTkzYzNlOGYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg3NDE5OTMzYzE0NTQ5NGU5MTUyNWVmNDhlOGMyMjRkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkyY2FkNmY3MjJmMTQwNTdhZDM4NmFjYWFhNTJlNzE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGM2N2VjZjBhNzIwNDBlMzlhMWNlNjBhMGI5YTQwN2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MjQ3Nzc2NWE3OGE0ZTAyYWUwNTRlNmMyY2Y3ZjQ0OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1NTAwYjNhNjIxOTQzZjA5YWViNjgyMGI0NzZmODYyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhiZDEyZTRiY2EwZjRjN2U4MTY3ZjQwOWM5ZWNhZmY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjkwNWIxNWJmYjA4NGE5ZWIyNzBlODFhODcxYzU4NDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYjQzYjJlMzg3YTE0M2Q3Yjc5MmM0M2ZlM2I1MGM4ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOWNiODE5NjI0ZjU0OTRiODU1NWQwNTcxZTA3NTg3NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNjc2MzY3ZWJkZDQ0MDViYmRhOWZlZWY1NmRlODU4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82Nzk1NDQzYzZhNjc0NmZlYTJiYzM0YzhlYjAxZDMzOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTU4M2NhNGVhMTQzNDBhNmJhYzQyNDQ2ZTg2MzI2ZDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NTc0OTJhOGZkNDU0NGRiOTc0OGQyZjE5MzVhYzAxNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAwOGM0ODVkZjE5NjQwNDNiZGZmZmNjOTdkZDk3OWE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlYWM1NmFiMGNjMDQyYWViMWZiMmZkMzAzMjU2ZTUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM3NzA3NGI5NGVjMzQzNGViNjlhYjAwYzI0M2I4NTI0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRjNTJlOWE1NzQ1ZDQ2M2JhOWNkNzUxNWFiMWNlZTQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA4NzU5YTY5NzE3NDQ5OTY5ZTAwZWVjODEzNzUyOGRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTBmMDFjYzk0OGUwNDQ1ZDk3NDVhNTM1NzdkMjBmODggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NDZmY2E2NzJlOTQ0Njc0YjZlNDM4NzhlN2ZmZjkyMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNDYzMjZkOTkwNTE0ZGZkYmY0OGM0MGRhYzE1YmMyOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84N2I3MzdmMTEyYTc0MmEzYmMyNjEyMDBjZGU5MTdmYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M2NTFiM2MzMWJlMTQwMTBhMWIzMzUyOWUwNTY4M2VmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4MDk2M2IwOTlkNjQ2NWU4ZmUwYjk1MTBkMWM2M2U2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGQ1YmUwODFjMDgyNGYzNmIxODliNjFiOTMxMmE1NzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDlhMzRhMTlhYjAyNDQ4MWE1ZTgwOWY5NjRmNzEzNmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U2YjgwMTJjMTAzMTQ2ZjBiZDQ4YWNmYjNmMTMzNDYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NGNmMDM5Y2ZjZjM0NTJlYTZkNDRhOTI4MjQ4MjdjNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDY3M2RlMWMzZDIzNDQzNjgyNDk0ZjIwYTc1NGQwZWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmQzODY4NmQ2ZGVlNGQ3OGFmODEwYTI3Mjg5M2ZjYWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjdjOTE2NDU3YTVjNGUwZmE5ZGRiYzlkZjkxZDA2YjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWZjNDEyMGI0Yzg2NGM5Mzk2OTljY2ZiMjAwYjkwZjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjY4NzRjOWRlNWM2NDgzZTljNDM0MzY2NGQ2MGI5ZDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZWZmZTFhNjM1YzU0MzAzODE0N2ZjOThlM2RlZDRkNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNWUyNmViYTAzYWE0ODk1OWFiZGRkYzdjNTkwNDRiMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQyNmFlZWU1MjBhNjQzMDM4YjY4YjhkYmFmZmU5NWYxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdjMGMyZDNjZTFhYjRjNjJiZTI1MGVmZjliM2YxYTZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JjMDM0ZjNlNjY1MjQ5Mjc4NDVlMjZlYTM5NDQ2ZTI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yOGFjNDI5M2UwYTc0ZGViOThiMzExYTA2Mjg5NzBhMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWVmZThmYTFkMzI4NGUxNjg2NDIzNjc2NTJjNDhlYjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U4MjBiZWViNDA0NzQ0OTA4YWNjNmQ1MDYzNmQ5MDQyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTAxZmY3MTM0N2U3NDE4YTkxMGMyZTJjNDJhY2JmMDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmM2ZjIxNWQyYjk4NDI2MTg0ZTk2M2FhZjBiMjQzMTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYzFmN2U3OGEzODI0ODZlOWU1NWNkM2Y5MTZhYWE4MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTVkYjliNmFmMzBiNDAzMDkyOWU3ZTQ3ZTgzZDA0NTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhiYTM5Y2FjNzUyNDQ3MjRiZTlhZGY3N2EwYjIxY2RmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMWFhMThkYjJiNzI0YzM4YTM0NDBkM2Y1MTQ5OWNiMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyNDMzN2FmNGRlODRmMGNiZTgwYWNlMGJhMTYxMjA0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBhODExYjNjMDJjNzQ3YTVhMmY3MzU3NDJiNjBmNDI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmNjMyOTZiZDE1YTRlYjU5MTM0YzFiMjIxNTllNTFmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMGI3NDU3OWE0MGQ0M2I1OGU0N2UxYmZlNjUxZWFlZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JhYzg0OWVkNGIwZDRlNTlhMzY0NjAyOWE2NzJkODE1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZkZGQyMmU1YjhmZDQ1NzliNzJhNjVlMTNmZWQ2ZWY1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwOTEwNDM0NmEzMzQxNGY5YzZiZDEyMjlhMjViM2JjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMjlmODcyMWJkYzI0YmFiYjE3ZDcyNmQyOGEyOWE3YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNjI4NTdhOTBjZGI0MDljODUzOWRkZjQ4MTAzNDllNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FhODI5NWEyYWQ0MDQ1YjA5NDFmMTM1MGQzNmRhMzgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWQxZmZkYjZkY2U1NGU2NTkyYzllODY5NDZmMjdlMjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYjgwOTdkOGQzMTA0ZDc0OTg5ODI2NGU4NmYxZTg3YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlkZjY5MzVjZWZkOTQxYjc4NDFjOGQxMjI2MzJmMTZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNhN2NiNTQyNTg5NDc5OTk3MDkyZmFmMzc1ZGNmMzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMTUyZTY2YTY4Y2U0NDBmOWMxNWNkY2Q2NzliZjE3OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MWZhNWQyY2ZmMTk0NDRlYmM2MTgwMzhiMzE5YmEzNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xODZlNGI1MzdmOTM0MTFmYTdlMGFjZDVlNDYzMTAzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQyZmY3MWQ3ZmNiZTQ5M2M4ZDBhZDE3NzI0ZjEyMzZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2JkMGE5YjQ0ZWJhNGQ3YjgzNmYyYTQ0MjE4Nzg0NTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjc3ZTVkODJmZWY4NGIyZjkwNDliMDFhZjU4Mzk1OWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE4NmU0YjUzN2Y5MzQxMWZhN2UwYWNkNWU0NjMxMDNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWMwOTc5ZTJmMzI3NDkzZWFiNjgyZGY1YTNjZWI4ZmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTg2ZTRiNTM3ZjkzNDExZmE3ZTBhY2Q1ZTQ2MzEwM2QpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb000035a20>"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add pop-up text to each marker on the map\n",
"latitudes = list(df_incidents.Y)\n",
"longitudes = list(df_incidents.X)\n",
"labels = list(df_incidents.Category)\n",
"\n",
"for lat, lng, label in zip(latitudes, longitudes, labels):\n",
" folium.Marker([lat, lng], popup=label).add_to(sanfran_map) \n",
" \n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Isn't this really cool? Now you are able to know what crime category occurred at each marker.\n",
"\n",
"If you find the map to be so congested will all these markers, there are two remedies to this problem. The simpler solution is to remove these location markers and just add the text to the circle markers themselves as follows:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZGZjZjlhNjQ5OGYyNDlmZTk4NjVjYTYwY2Y4N2IyZDEgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVkZGQ4YjBiMmM2ZjQyYWFiZDVlZWYxYWI5MzE1MTJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YTQzMTQ1NjdjYmU0MWU0OWU1MTZjNzdkYTQ2ZmI1NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NzQ5ZjBlMDIzYzk0ZDZjOTI1YTIxNDk1ZWE0YWFhYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjc0OWYwZTAyM2M5NGQ2YzkyNWEyMTQ5NWVhNGFhYWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YTQzMTQ1NjdjYmU0MWU0OWU1MTZjNzdkYTQ2ZmI1Ny5zZXRDb250ZW50KGh0bWxfNjc0OWYwZTAyM2M5NGQ2YzkyNWEyMTQ5NWVhNGFhYWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWRkZDhiMGIyYzZmNDJhYWJkNWVlZjFhYjkzMTUxMmEuYmluZFBvcHVwKHBvcHVwXzdhNDMxNDU2N2NiZTQxZTQ5ZTUxNmM3N2RhNDZmYjU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ0MTc5Zjc5ODhiNDQ0ODc5MmNkNTBiOWRmODQ1MWU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZTA5MGI2ODA1NzA0ZjI5OTZjYmM5NDVkN2E0ODA0NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MTA1YTZhOGNkYjM0NWQ3YmFhYTNlMjk0NWZmZDAzYSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDEwNWE2YThjZGIzNDVkN2JhYWEzZTI5NDVmZmQwM2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZTA5MGI2ODA1NzA0ZjI5OTZjYmM5NDVkN2E0ODA0NS5zZXRDb250ZW50KGh0bWxfNDEwNWE2YThjZGIzNDVkN2JhYWEzZTI5NDVmZmQwM2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDQxNzlmNzk4OGI0NDQ4NzkyY2Q1MGI5ZGY4NDUxZTYuYmluZFBvcHVwKHBvcHVwXzFlMDkwYjY4MDU3MDRmMjk5NmNiYzk0NWQ3YTQ4MDQ1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdiNmIzZDkwMjgwZDRlNTk4Yjc5MGM1YmY0MDViMzc3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5OTgwOTY3Mjk5NTk2LC0xMjIuMzg4ODU2MjA0MjkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTc3YzllNGE4ODE2NDBhODg2YWU4NTgyMThiZjdkOGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmViYjk5NmI0YWFjNGNiZTgwNWU5NjljZjUwYzhiNGMgPSAkKCc8ZGl2IGlkPSJodG1sXzZlYmI5OTZiNGFhYzRjYmU4MDVlOTY5Y2Y1MGM4YjRjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTc3YzllNGE4ODE2NDBhODg2YWU4NTgyMThiZjdkOGYuc2V0Q29udGVudChodG1sXzZlYmI5OTZiNGFhYzRjYmU4MDVlOTY5Y2Y1MGM4YjRjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdiNmIzZDkwMjgwZDRlNTk4Yjc5MGM1YmY0MDViMzc3LmJpbmRQb3B1cChwb3B1cF81NzdjOWU0YTg4MTY0MGE4ODZhZTg1ODIxOGJmN2Q4Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lY2EyNTdmMzAzOGI0NDZhYjMyNzcxOWE4MzU2ZDgzYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzVlZTllMjdmZjE3NGIyYmIzN2U0Zjg0MThhODk5ZDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWVhYzYxYWY5NzY2NDM3Y2JiNmIwZmYyMGQyMzBhZjggPSAkKCc8ZGl2IGlkPSJodG1sXzFlYWM2MWFmOTc2NjQzN2NiYjZiMGZmMjBkMjMwYWY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM1ZWU5ZTI3ZmYxNzRiMmJiMzdlNGY4NDE4YTg5OWQ3LnNldENvbnRlbnQoaHRtbF8xZWFjNjFhZjk3NjY0MzdjYmI2YjBmZjIwZDIzMGFmOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lY2EyNTdmMzAzOGI0NDZhYjMyNzcxOWE4MzU2ZDgzYy5iaW5kUG9wdXAocG9wdXBfMzVlZTllMjdmZjE3NGIyYmIzN2U0Zjg0MThhODk5ZDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODM0NTFjZTY2ZWMxNGIyZWFkYTdlZjAyMmNkNDJkNWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGRkNDNjNzdhZmNlNDY2NWJhYzg1NzBmMDIyYjY4OTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDY1ZGNlOGYzZDdjNGJhZGI3NzQxMDYyZjZhZjhlMDcgPSAkKCc8ZGl2IGlkPSJodG1sXzA2NWRjZThmM2Q3YzRiYWRiNzc0MTA2MmY2YWY4ZTA3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RkZDQzYzc3YWZjZTQ2NjViYWM4NTcwZjAyMmI2ODk0LnNldENvbnRlbnQoaHRtbF8wNjVkY2U4ZjNkN2M0YmFkYjc3NDEwNjJmNmFmOGUwNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MzQ1MWNlNjZlYzE0YjJlYWRhN2VmMDIyY2Q0MmQ1Zi5iaW5kUG9wdXAocG9wdXBfZGRkNDNjNzdhZmNlNDY2NWJhYzg1NzBmMDIyYjY4OTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjU3OTk0NzI2MjYxNDEzMmIwYzFkNjFiYzAxNzY3NzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMTg1NTU4MjksLTEyMi40MjYwNzcxNzczNzQ5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk2YzVlZThjOWJhYzQyMzM4OGI4OGU4ZjJkZmIyOWZiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q3NmE0YjgxZDA4ODQxZmNhODU3YzcxZjk2ZDBmOGM4ID0gJCgnPGRpdiBpZD0iaHRtbF9kNzZhNGI4MWQwODg0MWZjYTg1N2M3MWY5NmQwZjhjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTZjNWVlOGM5YmFjNDIzMzg4Yjg4ZThmMmRmYjI5ZmIuc2V0Q29udGVudChodG1sX2Q3NmE0YjgxZDA4ODQxZmNhODU3YzcxZjk2ZDBmOGM4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI1Nzk5NDcyNjI2MTQxMzJiMGMxZDYxYmMwMTc2NzcyLmJpbmRQb3B1cChwb3B1cF85NmM1ZWU4YzliYWM0MjMzODhiODhlOGYyZGZiMjlmYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMjIyMDg3MmI1MzQ0MWE5YWM3ODgyZDEwYTVjMjljOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMTQxMTM0ZWUyMmM0ODg0OTgwODFlMWNiOGNlYTE1OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZmJiNTU5MzI1OGE0MDg1YWYxMGY2Y2E0NDJhMWY1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2ZiYjU1OTMyNThhNDA4NWFmMTBmNmNhNDQyYTFmNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMTQxMTM0ZWUyMmM0ODg0OTgwODFlMWNiOGNlYTE1OC5zZXRDb250ZW50KGh0bWxfY2ZiYjU1OTMyNThhNDA4NWFmMTBmNmNhNDQyYTFmNTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTIyMjA4NzJiNTM0NDFhOWFjNzg4MmQxMGE1YzI5YzguYmluZFBvcHVwKHBvcHVwXzMxNDExMzRlZTIyYzQ4ODQ5ODA4MWUxY2I4Y2VhMTU4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI0NjAwMmQwZjIxMzQ4ZThhNjgyODExZjQ5N2NhZTljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ViNjQ2N2E2ZTBjZjRjYTI5NzNkMzNmOGJhMjA4YzkzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzljOWU1YjM3NDc5ZTQyZmQ4NGI1ODRlZDk4NDMwMGVmID0gJCgnPGRpdiBpZD0iaHRtbF85YzllNWIzNzQ3OWU0MmZkODRiNTg0ZWQ5ODQzMDBlZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYjY0NjdhNmUwY2Y0Y2EyOTczZDMzZjhiYTIwOGM5My5zZXRDb250ZW50KGh0bWxfOWM5ZTViMzc0NzllNDJmZDg0YjU4NGVkOTg0MzAwZWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjQ2MDAyZDBmMjEzNDhlOGE2ODI4MTFmNDk3Y2FlOWMuYmluZFBvcHVwKHBvcHVwX2ViNjQ2N2E2ZTBjZjRjYTI5NzNkMzNmOGJhMjA4YzkzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyZDQyMDc5YWU0MjRlODA4ZjJlYTM1Nzk4ZmUzNmVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1Nzg3NjIxODI5Mjk1LC0xMjIuMzkzMzU3MjQxNDUxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzAzOTI2ZWVjN2NjNDJkOTkzZWJhYmZkOWQ4ZDc1NGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjNjYzEzZTU3M2QwNDllMjlkOTVkMDMwYmY0Njk4N2YgPSAkKCc8ZGl2IGlkPSJodG1sX2IzY2MxM2U1NzNkMDQ5ZTI5ZDk1ZDAzMGJmNDY5ODdmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzAzOTI2ZWVjN2NjNDJkOTkzZWJhYmZkOWQ4ZDc1NGEuc2V0Q29udGVudChodG1sX2IzY2MxM2U1NzNkMDQ5ZTI5ZDk1ZDAzMGJmNDY5ODdmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUyZDQyMDc5YWU0MjRlODA4ZjJlYTM1Nzk4ZmUzNmVmLmJpbmRQb3B1cChwb3B1cF83MDM5MjZlZWM3Y2M0MmQ5OTNlYmFiZmQ5ZDhkNzU0YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yYmUwOTg2MTAzMTQ0NTJmOWFmYjU4ODI4ZWM5MjZhOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNzg1OWFlNWE5NjA0NTY2YjcwNzJiOTIwZTY0ZThlOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNWQ2OGVmNDk5ZGQ0OWVlYjFlMTdhZDA4NGI1ZmJkNSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjVkNjhlZjQ5OWRkNDllZWIxZTE3YWQwODRiNWZiZDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNzg1OWFlNWE5NjA0NTY2YjcwNzJiOTIwZTY0ZThlOC5zZXRDb250ZW50KGh0bWxfZjVkNjhlZjQ5OWRkNDllZWIxZTE3YWQwODRiNWZiZDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmJlMDk4NjEwMzE0NDUyZjlhZmI1ODgyOGVjOTI2YTguYmluZFBvcHVwKHBvcHVwX2I3ODU5YWU1YTk2MDQ1NjZiNzA3MmI5MjBlNjRlOGU4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyOTFiZDM3OWYyZDQ0NWFhYjFhYjgwMmZhYWRmMDliID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YjlhYjU0MmJmZTM0NzQxYmM4ZWYwZGNkNjc1MDhlZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NmNmYWRiNjJmZTI0NTMzYjYwNWJjZDY2M2FiYmY1MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDZjZmFkYjYyZmUyNDUzM2I2MDViY2Q2NjNhYmJmNTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdiOWFiNTQyYmZlMzQ3NDFiYzhlZjBkY2Q2NzUwOGVlLnNldENvbnRlbnQoaHRtbF80NmNmYWRiNjJmZTI0NTMzYjYwNWJjZDY2M2FiYmY1Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MjkxYmQzNzlmMmQ0NDVhYWIxYWI4MDJmYWFkZjA5Yi5iaW5kUG9wdXAocG9wdXBfN2I5YWI1NDJiZmUzNDc0MWJjOGVmMGRjZDY3NTA4ZWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjg1MDJmZDI1Y2JlNGQwOTgyMDM2MDg4Zjk2N2UyMzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNjg2NDQwNGRjN2M0ODYzYmE4YzcwMWExNzJhOWUxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNmM5MDNkMTU3YWE0ZDMxYjUzNDJkZWEwMjY3ZjQ0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfZTZjOTAzZDE1N2FhNGQzMWI1MzQyZGVhMDI2N2Y0NDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzY4NjQ0MDRkYzdjNDg2M2JhOGM3MDFhMTcyYTllMTAuc2V0Q29udGVudChodG1sX2U2YzkwM2QxNTdhYTRkMzFiNTM0MmRlYTAyNjdmNDQzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Y4NTAyZmQyNWNiZTRkMDk4MjAzNjA4OGY5NjdlMjMyLmJpbmRQb3B1cChwb3B1cF9jNjg2NDQwNGRjN2M0ODYzYmE4YzcwMWExNzJhOWUxMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83OTZlNzhlNzMwNWY0Y2M2OWQzZTA0ODQ2ZTg2YzhhOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmFkNmVhODdiODEwNDNjN2JmMDlkYjNhYTk1Yzc4YmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGY2N2EzMDc3N2Q4NGUwZjliY2E4N2IxZWIwYjUwODMgPSAkKCc8ZGl2IGlkPSJodG1sXzBmNjdhMzA3NzdkODRlMGY5YmNhODdiMWViMGI1MDgzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmFkNmVhODdiODEwNDNjN2JmMDlkYjNhYTk1Yzc4YmIuc2V0Q29udGVudChodG1sXzBmNjdhMzA3NzdkODRlMGY5YmNhODdiMWViMGI1MDgzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzc5NmU3OGU3MzA1ZjRjYzY5ZDNlMDQ4NDZlODZjOGE4LmJpbmRQb3B1cChwb3B1cF9mYWQ2ZWE4N2I4MTA0M2M3YmYwOWRiM2FhOTVjNzhiYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYjk5MjZiZmMyNmE0M2YxYWViNjE1ZDk2NDc4YjRjOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNjRiNDcxZGM2YmY0YjU0OTRiYzZiZTQ3YzlhZjIzOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YjcyMWYxYmM1NTU0N2ZhYjg0YzM1ZWNkNDU3NDZiMSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWI3MjFmMWJjNTU1NDdmYWI4NGMzNWVjZDQ1NzQ2YjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE2NGI0NzFkYzZiZjRiNTQ5NGJjNmJlNDdjOWFmMjM4LnNldENvbnRlbnQoaHRtbF85YjcyMWYxYmM1NTU0N2ZhYjg0YzM1ZWNkNDU3NDZiMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zYjk5MjZiZmMyNmE0M2YxYWViNjE1ZDk2NDc4YjRjOC5iaW5kUG9wdXAocG9wdXBfMTY0YjQ3MWRjNmJmNGI1NDk0YmM2YmU0N2M5YWYyMzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDRlM2VmYzMzNzk4NDcxMThmMzQ2YzdjMjE1ZTIzNTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzExZTJhNzg4M2NlOTQ0OTE4MzIwZDAzY2RhOWExMGIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxYzgzNWFkOGM2YjQ4NTU4NTBhNjQ3MzFkOWNhZWNmID0gJCgnPGRpdiBpZD0iaHRtbF80MWM4MzVhZDhjNmI0ODU1ODUwYTY0NzMxZDljYWVjZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzExZTJhNzg4M2NlOTQ0OTE4MzIwZDAzY2RhOWExMGIyLnNldENvbnRlbnQoaHRtbF80MWM4MzVhZDhjNmI0ODU1ODUwYTY0NzMxZDljYWVjZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80NGUzZWZjMzM3OTg0NzExOGYzNDZjN2MyMTVlMjM1Ny5iaW5kUG9wdXAocG9wdXBfMTFlMmE3ODgzY2U5NDQ5MTgzMjBkMDNjZGE5YTEwYjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWI0NjkyODVjM2NhNGY0MGE2YTNlMDhiYzc3NDFhNDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWZlMzc1MTlhZjE0NGRmNThjYWJkODdkY2Y1MWIxMjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjU1YWIzMWM5ZWMwNDExY2FjZjgxMWYxODNkMDkyMTUgPSAkKCc8ZGl2IGlkPSJodG1sXzI1NWFiMzFjOWVjMDQxMWNhY2Y4MTFmMTgzZDA5MjE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVE9MRU4gUFJPUEVSVFk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFmZTM3NTE5YWYxNDRkZjU4Y2FiZDg3ZGNmNTFiMTI0LnNldENvbnRlbnQoaHRtbF8yNTVhYjMxYzllYzA0MTFjYWNmODExZjE4M2QwOTIxNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xYjQ2OTI4NWMzY2E0ZjQwYTZhM2UwOGJjNzc0MWE0NC5iaW5kUG9wdXAocG9wdXBfMWZlMzc1MTlhZjE0NGRmNThjYWJkODdkY2Y1MWIxMjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTFlYzhhNjZjMzE2NGRiMDliMzBhNzA0MWE2Zjk4NjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zOGM3ODMwNjhhY2E0ZTAzODc1YzZhNGFmYWY2MGM4YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84YWRmZDcxN2Q0ZDg0ZmZlYTMzODZiMzQ5MDAwY2E0OCA9ICQoJzxkaXYgaWQ9Imh0bWxfOGFkZmQ3MTdkNGQ4NGZmZWEzMzg2YjM0OTAwMGNhNDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM4Yzc4MzA2OGFjYTRlMDM4NzVjNmE0YWZhZjYwYzhhLnNldENvbnRlbnQoaHRtbF84YWRmZDcxN2Q0ZDg0ZmZlYTMzODZiMzQ5MDAwY2E0OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MWVjOGE2NmMzMTY0ZGIwOWIzMGE3MDQxYTZmOTg2My5iaW5kUG9wdXAocG9wdXBfMzhjNzgzMDY4YWNhNGUwMzg3NWM2YTRhZmFmNjBjOGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmZjNTY1NjI2MzdjNDU3Mzk0MjhlMzk3MjRmMTBiZTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYzM3ZjMxNDc5Zjk0ZmEzOGQzODliMTg0ZjVkMWQ3ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYTdiMzI5YWM2Yzk0YzdmYjFjZTI2OGMxNGI2ZDdjZCA9ICQoJzxkaXYgaWQ9Imh0bWxfY2E3YjMyOWFjNmM5NGM3ZmIxY2UyNjhjMTRiNmQ3Y2QiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NjMzdmMzE0NzlmOTRmYTM4ZDM4OWIxODRmNWQxZDdlLnNldENvbnRlbnQoaHRtbF9jYTdiMzI5YWM2Yzk0YzdmYjFjZTI2OGMxNGI2ZDdjZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mZmM1NjU2MjYzN2M0NTczOTQyOGUzOTcyNGYxMGJlMS5iaW5kUG9wdXAocG9wdXBfY2MzN2YzMTQ3OWY5NGZhMzhkMzg5YjE4NGY1ZDFkN2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzMzZTdkOGRiMWRjNDIxYTljZmU2ZmE4YjQyMTQ4NTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMDhjNWUxMjU4ZWY0ZjY5YjJhNGU2OGY1MTgxMGZlZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jY2EwMTZkYTE5NDQ0MTIyYTBkZTM2MGE0M2M5OWJjMCA9ICQoJzxkaXYgaWQ9Imh0bWxfY2NhMDE2ZGExOTQ0NDEyMmEwZGUzNjBhNDNjOTliYzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UwOGM1ZTEyNThlZjRmNjliMmE0ZTY4ZjUxODEwZmVkLnNldENvbnRlbnQoaHRtbF9jY2EwMTZkYTE5NDQ0MTIyYTBkZTM2MGE0M2M5OWJjMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zMzNlN2Q4ZGIxZGM0MjFhOWNmZTZmYThiNDIxNDg1Ni5iaW5kUG9wdXAocG9wdXBfZTA4YzVlMTI1OGVmNGY2OWIyYTRlNjhmNTE4MTBmZWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmQzZTZjNGVkMzg0NGI3YmFjMjMyZGZiMTZkZjk0OGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODliMzIyZTI2MDhlNDIyNGEzMzUyNTFjM2NjMzZlZDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWI0ZjFkNmQ2NzlkNDI2NjgwM2Y5ZTcwZTY2ODJlZDIgPSAkKCc8ZGl2IGlkPSJodG1sXzFiNGYxZDZkNjc5ZDQyNjY4MDNmOWU3MGU2NjgyZWQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84OWIzMjJlMjYwOGU0MjI0YTMzNTI1MWMzY2MzNmVkNS5zZXRDb250ZW50KGh0bWxfMWI0ZjFkNmQ2NzlkNDI2NjgwM2Y5ZTcwZTY2ODJlZDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmQzZTZjNGVkMzg0NGI3YmFjMjMyZGZiMTZkZjk0OGUuYmluZFBvcHVwKHBvcHVwXzg5YjMyMmUyNjA4ZTQyMjRhMzM1MjUxYzNjYzM2ZWQ1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNkOTZjNDY5YmE3ZjQ0OGJhOTc4NTZkN2VhNDY2NzcyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2I5ZjFmZjZmNmQ3NDA4Njk3ZjcwNTY3ZTM3YTAxMzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGRiZDZmOGNiZThjNGE5YWFiMzJiOWE1ZGMyZGY4YzIgPSAkKCc8ZGl2IGlkPSJodG1sXzBkYmQ2ZjhjYmU4YzRhOWFhYjMyYjlhNWRjMmRmOGMyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2I5ZjFmZjZmNmQ3NDA4Njk3ZjcwNTY3ZTM3YTAxMzUuc2V0Q29udGVudChodG1sXzBkYmQ2ZjhjYmU4YzRhOWFhYjMyYjlhNWRjMmRmOGMyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNkOTZjNDY5YmE3ZjQ0OGJhOTc4NTZkN2VhNDY2NzcyLmJpbmRQb3B1cChwb3B1cF8zYjlmMWZmNmY2ZDc0MDg2OTdmNzA1NjdlMzdhMDEzNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xM2M4ZmZlMDdiMjA0YzBlYWNjNzQ1MjgxZmNjZWJmMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDM4OWQ2YWEwZTU1NGYwYzhhNDQ3NzM3NjlkNjcyYmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjg1ZGRkMmY5YTA2NDY3M2IzZDIxMjdiYTU2NGJhZjUgPSAkKCc8ZGl2IGlkPSJodG1sX2Y4NWRkZDJmOWEwNjQ2NzNiM2QyMTI3YmE1NjRiYWY1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDM4OWQ2YWEwZTU1NGYwYzhhNDQ3NzM3NjlkNjcyYmUuc2V0Q29udGVudChodG1sX2Y4NWRkZDJmOWEwNjQ2NzNiM2QyMTI3YmE1NjRiYWY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzEzYzhmZmUwN2IyMDRjMGVhY2M3NDUyODFmY2NlYmYyLmJpbmRQb3B1cChwb3B1cF8wMzg5ZDZhYTBlNTU0ZjBjOGE0NDc3Mzc2OWQ2NzJiZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80M2NjMjJjYjZhNWU0YjJiODQ4OTRjNDZlOTM3NzRiNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODZiOTIxZDk2ZTQ1NDUwMGEzOWIzMWRkZmQ0ODFmODIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjBjMzBmYmYxZGM0NDg4ZDg0ODYzOTRhNmI0NjI1YTAgPSAkKCc8ZGl2IGlkPSJodG1sX2YwYzMwZmJmMWRjNDQ4OGQ4NDg2Mzk0YTZiNDYyNWEwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NmI5MjFkOTZlNDU0NTAwYTM5YjMxZGRmZDQ4MWY4Mi5zZXRDb250ZW50KGh0bWxfZjBjMzBmYmYxZGM0NDg4ZDg0ODYzOTRhNmI0NjI1YTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDNjYzIyY2I2YTVlNGIyYjg0ODk0YzQ2ZTkzNzc0YjUuYmluZFBvcHVwKHBvcHVwXzg2YjkyMWQ5NmU0NTQ1MDBhMzliMzFkZGZkNDgxZjgyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk3NjQ5ZDUzZDVjNzRlNWZhN2Q3OWFhOTMyNWJjMzA4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jOTNkZmU3MTU2ZTM0ZThjODg3YzJjMDE2MTc2NTVhOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82Njc5MDJhNDk3MGQ0ZjlmYjNlZWIxZWIyZTIxZWUxMSA9ICQoJzxkaXYgaWQ9Imh0bWxfNjY3OTAyYTQ5NzBkNGY5ZmIzZWViMWViMmUyMWVlMTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOTNkZmU3MTU2ZTM0ZThjODg3YzJjMDE2MTc2NTVhOC5zZXRDb250ZW50KGh0bWxfNjY3OTAyYTQ5NzBkNGY5ZmIzZWViMWViMmUyMWVlMTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTc2NDlkNTNkNWM3NGU1ZmE3ZDc5YWE5MzI1YmMzMDguYmluZFBvcHVwKHBvcHVwX2M5M2RmZTcxNTZlMzRlOGM4ODdjMmMwMTYxNzY1NWE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcxZmQ1ODVlZTMzYjQwYmI5OWY4M2QxZjRkMjE2Y2ZjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODNhMzYyMzM3ZGJiNGU2M2I2ZjNmNTI2ZThiMjk2MzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2UzNDU2YTAzNzk1NDk2Y2I1YzY3ZDY0MjJkYjRmZjUgPSAkKCc8ZGl2IGlkPSJodG1sX2NlMzQ1NmEwMzc5NTQ5NmNiNWM2N2Q2NDIyZGI0ZmY1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84M2EzNjIzMzdkYmI0ZTYzYjZmM2Y1MjZlOGIyOTYzOC5zZXRDb250ZW50KGh0bWxfY2UzNDU2YTAzNzk1NDk2Y2I1YzY3ZDY0MjJkYjRmZjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzFmZDU4NWVlMzNiNDBiYjk5ZjgzZDFmNGQyMTZjZmMuYmluZFBvcHVwKHBvcHVwXzgzYTM2MjMzN2RiYjRlNjNiNmYzZjUyNmU4YjI5NjM4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4Y2JlNDU1NWRjZTRjMTE5MjNmZGVmODhiZGZjNmMxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85Njg1MThmYzM3MzM0MWMxODYzNWQ0ZWY0YTNhNWYyMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YzgzYjE2ZDE1MWI0ZTE5YmY1NGM3YTZjZGZiYmYxYSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWM4M2IxNmQxNTFiNGUxOWJmNTRjN2E2Y2RmYmJmMWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85Njg1MThmYzM3MzM0MWMxODYzNWQ0ZWY0YTNhNWYyMC5zZXRDb250ZW50KGh0bWxfOWM4M2IxNmQxNTFiNGUxOWJmNTRjN2E2Y2RmYmJmMWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjhjYmU0NTU1ZGNlNGMxMTkyM2ZkZWY4OGJkZmM2YzEuYmluZFBvcHVwKHBvcHVwXzk2ODUxOGZjMzczMzQxYzE4NjM1ZDRlZjRhM2E1ZjIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdjMjE1MDVlMzNlYjQwM2E4YjRiNzY4MTgyYWE5ZThhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NTc1MjMxNzYxNSwtMTIyLjQyNzU2MjU5Njk4NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M4MjgyZDQ3NzJkMDQ3ZDBhMTdmZGExMWYwM2RhNGY0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhlZTEwYzI0OTRmNzRmMTE4ZGJlMmY4NzRiMWE0ZDA1ID0gJCgnPGRpdiBpZD0iaHRtbF84ZWUxMGMyNDk0Zjc0ZjExOGRiZTJmODc0YjFhNGQwNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M4MjgyZDQ3NzJkMDQ3ZDBhMTdmZGExMWYwM2RhNGY0LnNldENvbnRlbnQoaHRtbF84ZWUxMGMyNDk0Zjc0ZjExOGRiZTJmODc0YjFhNGQwNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83YzIxNTA1ZTMzZWI0MDNhOGI0Yjc2ODE4MmFhOWU4YS5iaW5kUG9wdXAocG9wdXBfYzgyODJkNDc3MmQwNDdkMGExN2ZkYTExZjAzZGE0ZjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjExYjE5Njc3MzYxNGU5ZGI3YjliZGRhYmRhMDRkZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjQ0OGU5MzA4YzZjNDgyOGExZGFlYjIyZmI5MWMwZWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGRhOTA4YTYxYzA4NDE5ZDhmZjlmM2JlMjBmMWY2NTggPSAkKCc8ZGl2IGlkPSJodG1sXzhkYTkwOGE2MWMwODQxOWQ4ZmY5ZjNiZTIwZjFmNjU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjQ0OGU5MzA4YzZjNDgyOGExZGFlYjIyZmI5MWMwZWQuc2V0Q29udGVudChodG1sXzhkYTkwOGE2MWMwODQxOWQ4ZmY5ZjNiZTIwZjFmNjU4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzYxMWIxOTY3NzM2MTRlOWRiN2I5YmRkYWJkYTA0ZGU5LmJpbmRQb3B1cChwb3B1cF9iNDQ4ZTkzMDhjNmM0ODI4YTFkYWViMjJmYjkxYzBlZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYTk3MDY4YWQ2ODU0OWNjOTExMTM3YjZkYzkxNzNkZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIyNTU1ZGQyYTY2ODQ0ZGE5ZWRkNDIxY2NkNzRiMzA2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ0OWIyMjQyZWJiMDRlNjU5NjUzZmIzMTA4OGMzZDAxID0gJCgnPGRpdiBpZD0iaHRtbF80NDliMjI0MmViYjA0ZTY1OTY1M2ZiMzEwODhjM2QwMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIyNTU1ZGQyYTY2ODQ0ZGE5ZWRkNDIxY2NkNzRiMzA2LnNldENvbnRlbnQoaHRtbF80NDliMjI0MmViYjA0ZTY1OTY1M2ZiMzEwODhjM2QwMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hYTk3MDY4YWQ2ODU0OWNjOTExMTM3YjZkYzkxNzNkZS5iaW5kUG9wdXAocG9wdXBfMjI1NTVkZDJhNjY4NDRkYTllZGQ0MjFjY2Q3NGIzMDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTI5Y2IzNmRmOGMwNGZiZDk3MjZmMGFiNmUyYjViMmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MDkyMDEwNDYyMzc5LC0xMjIuNDM0NjA5MjgwMzUyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWZkMTVmNDgyYzA5NDY3ZGE4ZDgzZTk0NDJkN2U3YWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTY3OWNjMTU1MTI1NDUyODkzMTBmNTRiYzY3YzQyM2IgPSAkKCc8ZGl2IGlkPSJodG1sX2E2NzljYzE1NTEyNTQ1Mjg5MzEwZjU0YmM2N2M0MjNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVmZDE1ZjQ4MmMwOTQ2N2RhOGQ4M2U5NDQyZDdlN2FkLnNldENvbnRlbnQoaHRtbF9hNjc5Y2MxNTUxMjU0NTI4OTMxMGY1NGJjNjdjNDIzYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hMjljYjM2ZGY4YzA0ZmJkOTcyNmYwYWI2ZTJiNWIyYi5iaW5kUG9wdXAocG9wdXBfNWZkMTVmNDgyYzA5NDY3ZGE4ZDgzZTk0NDJkN2U3YWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjRiM2YyMDhiZWUxNGZkYWJiOWRiMDJkOWFjZGRiYzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZmY2OGRhMjBhZGI0Nzg5YjYyZmYwMTQ5OWNmNzJiMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ODA3YmE1ZmI0YzM0MWU3YTk3YmMxZTQ3NDAxMTUwYiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTgwN2JhNWZiNGMzNDFlN2E5N2JjMWU0NzQwMTE1MGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZFSElDTEUgVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNmZjY4ZGEyMGFkYjQ3ODliNjJmZjAxNDk5Y2Y3MmIxLnNldENvbnRlbnQoaHRtbF85ODA3YmE1ZmI0YzM0MWU3YTk3YmMxZTQ3NDAxMTUwYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNGIzZjIwOGJlZTE0ZmRhYmI5ZGIwMmQ5YWNkZGJjOS5iaW5kUG9wdXAocG9wdXBfM2ZmNjhkYTIwYWRiNDc4OWI2MmZmMDE0OTljZjcyYjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDk3OGNiZTFmZGUxNDAxMGFmYTUxMTI0YzFhZjMyZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDFlNzQ4ZTZmZmEzNDFhZGE0Njk0ZGRmZWQyOGE4OGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTUzZmYyYTJiZjllNDYzMGEyNDE1OWI5OGY3YThkZGYgPSAkKCc8ZGl2IGlkPSJodG1sX2E1M2ZmMmEyYmY5ZTQ2MzBhMjQxNTliOThmN2E4ZGRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MWU3NDhlNmZmYTM0MWFkYTQ2OTRkZGZlZDI4YTg4ZS5zZXRDb250ZW50KGh0bWxfYTUzZmYyYTJiZjllNDYzMGEyNDE1OWI5OGY3YThkZGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDk3OGNiZTFmZGUxNDAxMGFmYTUxMTI0YzFhZjMyZjAuYmluZFBvcHVwKHBvcHVwXzQxZTc0OGU2ZmZhMzQxYWRhNDY5NGRkZmVkMjhhODhlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ3YzFjNDdlMWY2MjRjMmQ5NWMxZTQxN2UwMGY1ZDhiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU0OWFkMDhmNmI1NjQ3ODU4NDEzNjI0MzZjM2U1YjQ3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JiM2U2NDA3MGQ0MDQyYmRhYTU0ZWM2ODQ0ODlhYjgzID0gJCgnPGRpdiBpZD0iaHRtbF9iYjNlNjQwNzBkNDA0MmJkYWE1NGVjNjg0NDg5YWI4MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTQ5YWQwOGY2YjU2NDc4NTg0MTM2MjQzNmMzZTViNDcuc2V0Q29udGVudChodG1sX2JiM2U2NDA3MGQ0MDQyYmRhYTU0ZWM2ODQ0ODlhYjgzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ3YzFjNDdlMWY2MjRjMmQ5NWMxZTQxN2UwMGY1ZDhiLmJpbmRQb3B1cChwb3B1cF81NDlhZDA4ZjZiNTY0Nzg1ODQxMzYyNDM2YzNlNWI0Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MTVhZTIxZGI0NDI0NTE4OTM5ZGIyNDcxMTc3MTU3ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZjM3ZWY1NmQwZGE0NjY5OWY3NGE3ODM0MjZhZGE5MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTgzOTJjNWM4ZmQ0YmRkOTQ0YzQyZmFmNGJkYmU0YSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGE4MzkyYzVjOGZkNGJkZDk0NGM0MmZhZjRiZGJlNGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhmMzdlZjU2ZDBkYTQ2Njk5Zjc0YTc4MzQyNmFkYTkwLnNldENvbnRlbnQoaHRtbF80YTgzOTJjNWM4ZmQ0YmRkOTQ0YzQyZmFmNGJkYmU0YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MTVhZTIxZGI0NDI0NTE4OTM5ZGIyNDcxMTc3MTU3ZS5iaW5kUG9wdXAocG9wdXBfOGYzN2VmNTZkMGRhNDY2OTlmNzRhNzgzNDI2YWRhOTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjljZmQ4MzZmMmRkNGFjYTlkYzAzMTE4MGJkZmNlYmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MjRmNzllOTc3MDM0YTVkOTYxYjBiMzk4ZDYwZGUyMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMDQ1ZTYwNWI0ODE0OWZiYmYzNzhlYzgwMzg4M2EyNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDA0NWU2MDViNDgxNDlmYmJmMzc4ZWM4MDM4ODNhMjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MjRmNzllOTc3MDM0YTVkOTYxYjBiMzk4ZDYwZGUyMC5zZXRDb250ZW50KGh0bWxfZDA0NWU2MDViNDgxNDlmYmJmMzc4ZWM4MDM4ODNhMjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjljZmQ4MzZmMmRkNGFjYTlkYzAzMTE4MGJkZmNlYmQuYmluZFBvcHVwKHBvcHVwXzUyNGY3OWU5NzcwMzRhNWQ5NjFiMGIzOThkNjBkZTIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IxMTJiMjg5NmU0MzQ2ZmI5YzhiZjZmYTViYTdjYjU5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjJiZmY3ZTBiNDQ0NGZmN2I3ZDg3OTk1MTI1MDkyMzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmIxNTQ5NTQ5NTdmNGM0MGI3ZjI1NWU5MGYzYmRkYjMgPSAkKCc8ZGl2IGlkPSJodG1sXzJiMTU0OTU0OTU3ZjRjNDBiN2YyNTVlOTBmM2JkZGIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjJiZmY3ZTBiNDQ0NGZmN2I3ZDg3OTk1MTI1MDkyMzYuc2V0Q29udGVudChodG1sXzJiMTU0OTU0OTU3ZjRjNDBiN2YyNTVlOTBmM2JkZGIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2IxMTJiMjg5NmU0MzQ2ZmI5YzhiZjZmYTViYTdjYjU5LmJpbmRQb3B1cChwb3B1cF82MmJmZjdlMGI0NDQ0ZmY3YjdkODc5OTUxMjUwOTIzNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NTdiYjRlYzU4MTg0ZTFhYjBjY2JjZjU4OTFlM2M0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA2Y2Q1NjQ0NGMzYjRkNzZiM2I0MjUwNTFiNWU3YzE4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U1NTI0OTdlZDhhODRkZWNiYjY5ZjJjZjU4MmFlNDJhID0gJCgnPGRpdiBpZD0iaHRtbF9lNTUyNDk3ZWQ4YTg0ZGVjYmI2OWYyY2Y1ODJhZTQyYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNmNkNTY0NDRjM2I0ZDc2YjNiNDI1MDUxYjVlN2MxOC5zZXRDb250ZW50KGh0bWxfZTU1MjQ5N2VkOGE4NGRlY2JiNjlmMmNmNTgyYWU0MmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDU3YmI0ZWM1ODE4NGUxYWIwY2NiY2Y1ODkxZTNjNDQuYmluZFBvcHVwKHBvcHVwXzA2Y2Q1NjQ0NGMzYjRkNzZiM2I0MjUwNTFiNWU3YzE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljOGJiMGVkMzAwZTQ0ZmFiNGIyYjc0MDAyMDIyMWVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzExNDgzNzI5NjkyNjRmYjFhMTdhZTRkNjBmZjFkOGFiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlmNTJjYjJkMGZjMjQzNTQ5NTZhYjJhMDI1YTgxZmZlID0gJCgnPGRpdiBpZD0iaHRtbF85ZjUyY2IyZDBmYzI0MzU0OTU2YWIyYTAyNWE4MWZmZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMTQ4MzcyOTY5MjY0ZmIxYTE3YWU0ZDYwZmYxZDhhYi5zZXRDb250ZW50KGh0bWxfOWY1MmNiMmQwZmMyNDM1NDk1NmFiMmEwMjVhODFmZmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWM4YmIwZWQzMDBlNDRmYWI0YjJiNzQwMDIwMjIxZWUuYmluZFBvcHVwKHBvcHVwXzExNDgzNzI5NjkyNjRmYjFhMTdhZTRkNjBmZjFkOGFiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU4OWJmYTAyZmFjNTRmNzdhODQ1NGViNTBiMjliOGYxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDcwMzNjZDZhNDAxNDEwMTk4ZTJhY2IzN2FkOWMwZTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjgyYzI2YjVkYTI3NGI3MDhhZjVjODNlMDE3OGUzMjEgPSAkKCc8ZGl2IGlkPSJodG1sXzI4MmMyNmI1ZGEyNzRiNzA4YWY1YzgzZTAxNzhlMzIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNzAzM2NkNmE0MDE0MTAxOThlMmFjYjM3YWQ5YzBlMS5zZXRDb250ZW50KGh0bWxfMjgyYzI2YjVkYTI3NGI3MDhhZjVjODNlMDE3OGUzMjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTg5YmZhMDJmYWM1NGY3N2E4NDU0ZWI1MGIyOWI4ZjEuYmluZFBvcHVwKHBvcHVwX2Q3MDMzY2Q2YTQwMTQxMDE5OGUyYWNiMzdhZDljMGUxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M1ZjQ2YTEzNTUxZTQ1N2NiY2UzOWY2N2NmN2Y1ZDg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTc5MzY5ZTA5N2RkNGFlNmExMmI1ZTA1ODA2NjczNjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjgwOGZlZjQxMzI5NGQ5YWJkZmM5ZWVkNDZhMjg4MjMgPSAkKCc8ZGl2IGlkPSJodG1sX2I4MDhmZWY0MTMyOTRkOWFiZGZjOWVlZDQ2YTI4ODIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTc5MzY5ZTA5N2RkNGFlNmExMmI1ZTA1ODA2NjczNjIuc2V0Q29udGVudChodG1sX2I4MDhmZWY0MTMyOTRkOWFiZGZjOWVlZDQ2YTI4ODIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M1ZjQ2YTEzNTUxZTQ1N2NiY2UzOWY2N2NmN2Y1ZDg0LmJpbmRQb3B1cChwb3B1cF8xNzkzNjllMDk3ZGQ0YWU2YTEyYjVlMDU4MDY2NzM2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZGMwMGMyYTJkYWE0MmYxYmI4MDc0NTU0ODI0NzNiYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMTQxNzA2NjJiMTQ0YjhjYjQ1ZGM2MDQyNmRmNWRmYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTQyNDdiMThmNmM0NzY1OTgxMmViOTMzOGIwNTY0NSA9ICQoJzxkaXYgaWQ9Imh0bWxfNjE0MjQ3YjE4ZjZjNDc2NTk4MTJlYjkzMzhiMDU2NDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjE0MTcwNjYyYjE0NGI4Y2I0NWRjNjA0MjZkZjVkZmEuc2V0Q29udGVudChodG1sXzYxNDI0N2IxOGY2YzQ3NjU5ODEyZWI5MzM4YjA1NjQ1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBkYzAwYzJhMmRhYTQyZjFiYjgwNzQ1NTQ4MjQ3M2JiLmJpbmRQb3B1cChwb3B1cF9iMTQxNzA2NjJiMTQ0YjhjYjQ1ZGM2MDQyNmRmNWRmYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZWE0YzMwYTM3NDQ0OGEyYTE0M2MxOTYxYzU4ZjNmNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMWU2NmJiNjg0Mjg0NTYxYWY2ZTg0MzAzOTc3Mzk3MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYWJiYjI2OGNmOTc0N2ZlODY3YjU0OTE3ZWE5NmMxMSA9ICQoJzxkaXYgaWQ9Imh0bWxfZWFiYmIyNjhjZjk3NDdmZTg2N2I1NDkxN2VhOTZjMTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ExZTY2YmI2ODQyODQ1NjFhZjZlODQzMDM5NzczOTcwLnNldENvbnRlbnQoaHRtbF9lYWJiYjI2OGNmOTc0N2ZlODY3YjU0OTE3ZWE5NmMxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82ZWE0YzMwYTM3NDQ0OGEyYTE0M2MxOTYxYzU4ZjNmNS5iaW5kUG9wdXAocG9wdXBfYTFlNjZiYjY4NDI4NDU2MWFmNmU4NDMwMzk3NzM5NzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTU5MGZjZjM2NGEwNDc3ZTg2YzAwZjJhYjEzZWM3ODggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmIzYTgyNDg4MjgwNDk0ODgyMzVlMTE5ZDBlZmQzNzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTdkNGQyYzk4MTEyNGZiOGI1NDRhNTY4MzFlZTVhODUgPSAkKCc8ZGl2IGlkPSJodG1sXzk3ZDRkMmM5ODExMjRmYjhiNTQ0YTU2ODMxZWU1YTg1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82YjNhODI0ODgyODA0OTQ4ODIzNWUxMTlkMGVmZDM3NS5zZXRDb250ZW50KGh0bWxfOTdkNGQyYzk4MTEyNGZiOGI1NDRhNTY4MzFlZTVhODUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTU5MGZjZjM2NGEwNDc3ZTg2YzAwZjJhYjEzZWM3ODguYmluZFBvcHVwKHBvcHVwXzZiM2E4MjQ4ODI4MDQ5NDg4MjM1ZTExOWQwZWZkMzc1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI3NTg1MTk0MDViZjQyNjc5YjJlODdmNzNjYzFlZWM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMWMwNzU4OWRkNmQ0YTNlOGRkNWU5YzdjOWU5MDBlNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MDQ3NDFjNGIzZGY0N2MwYmI1NGRhOWE2MTk0ZDgwOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNjA0NzQxYzRiM2RmNDdjMGJiNTRkYTlhNjE5NGQ4MDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTFjMDc1ODlkZDZkNGEzZThkZDVlOWM3YzllOTAwZTcuc2V0Q29udGVudChodG1sXzYwNDc0MWM0YjNkZjQ3YzBiYjU0ZGE5YTYxOTRkODA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI3NTg1MTk0MDViZjQyNjc5YjJlODdmNzNjYzFlZWM4LmJpbmRQb3B1cChwb3B1cF9lMWMwNzU4OWRkNmQ0YTNlOGRkNWU5YzdjOWU5MDBlNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hZTNjOTk3ZDhiOTI0MWY5YTUwMWM4Zjc1N2E5NDNhNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVlNzJiNWU1NzAyMzQwY2M4YjMzNWFkZGU1ZjViMDYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ2NTMzYjcxMWUwOTRmYjA5MWExNjdhYzM2YWQyYTY0ID0gJCgnPGRpdiBpZD0iaHRtbF80NjUzM2I3MTFlMDk0ZmIwOTFhMTY3YWMzNmFkMmE2NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVlNzJiNWU1NzAyMzQwY2M4YjMzNWFkZGU1ZjViMDYzLnNldENvbnRlbnQoaHRtbF80NjUzM2I3MTFlMDk0ZmIwOTFhMTY3YWMzNmFkMmE2NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hZTNjOTk3ZDhiOTI0MWY5YTUwMWM4Zjc1N2E5NDNhNC5iaW5kUG9wdXAocG9wdXBfNWU3MmI1ZTU3MDIzNDBjYzhiMzM1YWRkZTVmNWIwNjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWNmODBiOTViYmI0NDEzZmI0YTgwNWE0YWM5ZjFmOGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNmQwODBkYzcyOGU0MWVmYmM1NDllOGY3OGFiZjcwMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82Zjg3OGMzYTRhNTE0MzM2OGY4ZjNjMzA2MzcyYjQwYSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmY4NzhjM2E0YTUxNDMzNjhmOGYzYzMwNjM3MmI0MGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNmQwODBkYzcyOGU0MWVmYmM1NDllOGY3OGFiZjcwMi5zZXRDb250ZW50KGh0bWxfNmY4NzhjM2E0YTUxNDMzNjhmOGYzYzMwNjM3MmI0MGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWNmODBiOTViYmI0NDEzZmI0YTgwNWE0YWM5ZjFmOGYuYmluZFBvcHVwKHBvcHVwX2Q2ZDA4MGRjNzI4ZTQxZWZiYzU0OWU4Zjc4YWJmNzAyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMyMmJkZjE3OWU0MzQyZTk4OGViYzFjZDBiYzYyZWZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzEyZWY1NjU1NTIzYzQ4Mzc5NTZmMzJiM2E3YTdkY2U3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk2ODM3MmMwNGZkMDQ1NTA4ZmY3N2MzYWQ4NWM2N2VjID0gJCgnPGRpdiBpZD0iaHRtbF85NjgzNzJjMDRmZDA0NTUwOGZmNzdjM2FkODVjNjdlYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzEyZWY1NjU1NTIzYzQ4Mzc5NTZmMzJiM2E3YTdkY2U3LnNldENvbnRlbnQoaHRtbF85NjgzNzJjMDRmZDA0NTUwOGZmNzdjM2FkODVjNjdlYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zMjJiZGYxNzllNDM0MmU5ODhlYmMxY2QwYmM2MmVmYi5iaW5kUG9wdXAocG9wdXBfMTJlZjU2NTU1MjNjNDgzNzk1NmYzMmIzYTdhN2RjZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjJlNTMzYzUxNTE4NDJmMzkyYzk0NDAyODA0NjRhYjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTMxMDgzNDMzMjY0LC0xMjIuNDQ0MzE0MDI1MTg4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWNkZGZjZmQ4ZWFkNDU0NzhmZTM5YjNiNzNjMDYyZTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmFlYTRjYzc5MjIyNGQwMjhiYWI1NTE3NWEyZGQ3NzcgPSAkKCc8ZGl2IGlkPSJodG1sXzZhZWE0Y2M3OTIyMjRkMDI4YmFiNTUxNzVhMmRkNzc3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85Y2RkZmNmZDhlYWQ0NTQ3OGZlMzliM2I3M2MwNjJlNS5zZXRDb250ZW50KGh0bWxfNmFlYTRjYzc5MjIyNGQwMjhiYWI1NTE3NWEyZGQ3NzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjJlNTMzYzUxNTE4NDJmMzkyYzk0NDAyODA0NjRhYjMuYmluZFBvcHVwKHBvcHVwXzljZGRmY2ZkOGVhZDQ1NDc4ZmUzOWIzYjczYzA2MmU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA5OTAyODg4NWI2YTRhZTdhZGMzMTMyMTQ5ZjdjNTRhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMyNTk0MWIyMzlhZDQzNWZhNzA5MmU4YTdkNDQyNTkzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZkZjEzOTFjMmMzODQzMzg5NmZkNGIxOTRiOGM5ZWQxID0gJCgnPGRpdiBpZD0iaHRtbF82ZGYxMzkxYzJjMzg0MzM4OTZmZDRiMTk0YjhjOWVkMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMyNTk0MWIyMzlhZDQzNWZhNzA5MmU4YTdkNDQyNTkzLnNldENvbnRlbnQoaHRtbF82ZGYxMzkxYzJjMzg0MzM4OTZmZDRiMTk0YjhjOWVkMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wOTkwMjg4ODViNmE0YWU3YWRjMzEzMjE0OWY3YzU0YS5iaW5kUG9wdXAocG9wdXBfMzI1OTQxYjIzOWFkNDM1ZmE3MDkyZThhN2Q0NDI1OTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDkwOTgxMzQ0YjgzNDJkNjk3M2Y0ZTM4MzE2ZTNiZGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmIxMGE5NGMwNWI5NGQzYWIwODdlZDlhZDZmZDQ2MmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWY0ZjhhYzg1MjEwNDc3Yzg3NDAxNTZkYWE0N2QyZTQgPSAkKCc8ZGl2IGlkPSJodG1sXzlmNGY4YWM4NTIxMDQ3N2M4NzQwMTU2ZGFhNDdkMmU0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmIxMGE5NGMwNWI5NGQzYWIwODdlZDlhZDZmZDQ2MmMuc2V0Q29udGVudChodG1sXzlmNGY4YWM4NTIxMDQ3N2M4NzQwMTU2ZGFhNDdkMmU0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA5MDk4MTM0NGI4MzQyZDY5NzNmNGUzODMxNmUzYmRlLmJpbmRQb3B1cChwb3B1cF9iYjEwYTk0YzA1Yjk0ZDNhYjA4N2VkOWFkNmZkNDYyYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNDFhZmVkZWM5ODA0ZTkyODA1Zjk5ZDE3ZTg5MmQxOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYyOGUyNWE5MDk4YzRhZDliMjBiMThhNjkzZWQ1M2Y5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRiMjA5OTFmMjM3ZDRhYTJiODY3OWYwM2EwNTk5NjliID0gJCgnPGRpdiBpZD0iaHRtbF80YjIwOTkxZjIzN2Q0YWEyYjg2NzlmMDNhMDU5OTY5YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjI4ZTI1YTkwOThjNGFkOWIyMGIxOGE2OTNlZDUzZjkuc2V0Q29udGVudChodG1sXzRiMjA5OTFmMjM3ZDRhYTJiODY3OWYwM2EwNTk5NjliKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I0MWFmZWRlYzk4MDRlOTI4MDVmOTlkMTdlODkyZDE5LmJpbmRQb3B1cChwb3B1cF82MjhlMjVhOTA5OGM0YWQ5YjIwYjE4YTY5M2VkNTNmOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NWFkNzU5OWVhZDk0YWZkOTYyMGQ0Yjg1NjA3NzQyOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUzMmVmMjcyODM0OTQ3MTFiMzg1NGM0ZDNhNjIwNzI4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRmYzg2MDVkNGRmYzQwMThhNDk3MDI3ZTYyYThkZjM0ID0gJCgnPGRpdiBpZD0iaHRtbF80ZmM4NjA1ZDRkZmM0MDE4YTQ5NzAyN2U2MmE4ZGYzNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUzMmVmMjcyODM0OTQ3MTFiMzg1NGM0ZDNhNjIwNzI4LnNldENvbnRlbnQoaHRtbF80ZmM4NjA1ZDRkZmM0MDE4YTQ5NzAyN2U2MmE4ZGYzNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80NWFkNzU5OWVhZDk0YWZkOTYyMGQ0Yjg1NjA3NzQyOC5iaW5kUG9wdXAocG9wdXBfNTMyZWYyNzI4MzQ5NDcxMWIzODU0YzRkM2E2MjA3MjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTc4NDFhMGUxZGEzNGE5OWE0YTAyZjZhMDUwYTkxNzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWQ2ZTkzZmM2Yzk5NDQ1M2E3Mjk3MGRhMGE1MWIzYjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODlkODhlNjllZjFhNGY3OGJhMjUxMzRkNGMxMmY4MWUgPSAkKCc8ZGl2IGlkPSJodG1sXzg5ZDg4ZTY5ZWYxYTRmNzhiYTI1MTM0ZDRjMTJmODFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZDZlOTNmYzZjOTk0NDUzYTcyOTcwZGEwYTUxYjNiNi5zZXRDb250ZW50KGh0bWxfODlkODhlNjllZjFhNGY3OGJhMjUxMzRkNGMxMmY4MWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTc4NDFhMGUxZGEzNGE5OWE0YTAyZjZhMDUwYTkxNzYuYmluZFBvcHVwKHBvcHVwX2FkNmU5M2ZjNmM5OTQ0NTNhNzI5NzBkYTBhNTFiM2I2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxYTczZDE3MTc5NDRkN2Q4ZWZlMGExZWUyYTMzYWYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMDIzODQ3ODk3NSwtMTIyLjQwMTE2MTU1NTYwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4MjVmMjhlNmYxMDQwY2FiNzg3MmFmYjdhYjEzYzkyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM4YzY3YWUzMTY3MjQ0ODQ4ZTkzMGIyZDA2ODUzMzhhID0gJCgnPGRpdiBpZD0iaHRtbF8zOGM2N2FlMzE2NzI0NDg0OGU5MzBiMmQwNjg1MzM4YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4MjVmMjhlNmYxMDQwY2FiNzg3MmFmYjdhYjEzYzkyLnNldENvbnRlbnQoaHRtbF8zOGM2N2FlMzE2NzI0NDg0OGU5MzBiMmQwNjg1MzM4YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMWE3M2QxNzE3OTQ0ZDdkOGVmZTBhMWVlMmEzM2FmMC5iaW5kUG9wdXAocG9wdXBfZTgyNWYyOGU2ZjEwNDBjYWI3ODcyYWZiN2FiMTNjOTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzViMGQwYzkzOGYxNGRlOTg3NGQ1NzEyMDZhMGUxZjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYjk3Zjg1MTcxMWE0ZjQyOTczYTU1ODJhMjFkYmRmOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MjBiOWU3NzRkODY0MGUxYTVhZWM0NzI0MmIwZjdiMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTIwYjllNzc0ZDg2NDBlMWE1YWVjNDcyNDJiMGY3YjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYjk3Zjg1MTcxMWE0ZjQyOTczYTU1ODJhMjFkYmRmOC5zZXRDb250ZW50KGh0bWxfNTIwYjllNzc0ZDg2NDBlMWE1YWVjNDcyNDJiMGY3YjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzViMGQwYzkzOGYxNGRlOTg3NGQ1NzEyMDZhMGUxZjMuYmluZFBvcHVwKHBvcHVwXzFiOTdmODUxNzExYTRmNDI5NzNhNTU4MmEyMWRiZGY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E1NzY3N2MxNWM5NzQ3MTBiMmM5NWViODUzNzYzMjI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NjODk5N2E3MjRkNDRlZDY4YjI3NGJlN2Y1NDNiMzU1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlY2U0ZmFjZGNjMTRjY2RhMDUwMzU5M2U0NTU1NzQwID0gJCgnPGRpdiBpZD0iaHRtbF9kZWNlNGZhY2RjYzE0Y2NkYTA1MDM1OTNlNDU1NTc0MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYzg5OTdhNzI0ZDQ0ZWQ2OGIyNzRiZTdmNTQzYjM1NS5zZXRDb250ZW50KGh0bWxfZGVjZTRmYWNkY2MxNGNjZGEwNTAzNTkzZTQ1NTU3NDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTU3Njc3YzE1Yzk3NDcxMGIyYzk1ZWI4NTM3NjMyMjcuYmluZFBvcHVwKHBvcHVwX2NjODk5N2E3MjRkNDRlZDY4YjI3NGJlN2Y1NDNiMzU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVjNDYxODg3MmQ3NTQ1Y2VhNDg0MGQ1MzM5MjRjMTY2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGQ3MGQ5NTllYTJlNDAyOGI3NjA5ZGU0Mzk0N2FkZWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjExNGFkZTE1N2QxNDY0NTlhNmQ3MjU1MjJkNjBiYjcgPSAkKCc8ZGl2IGlkPSJodG1sX2IxMTRhZGUxNTdkMTQ2NDU5YTZkNzI1NTIyZDYwYmI3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBkNzBkOTU5ZWEyZTQwMjhiNzYwOWRlNDM5NDdhZGVmLnNldENvbnRlbnQoaHRtbF9iMTE0YWRlMTU3ZDE0NjQ1OWE2ZDcyNTUyMmQ2MGJiNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81YzQ2MTg4NzJkNzU0NWNlYTQ4NDBkNTMzOTI0YzE2Ni5iaW5kUG9wdXAocG9wdXBfMGQ3MGQ5NTllYTJlNDAyOGI3NjA5ZGU0Mzk0N2FkZWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGY1MmFhZTk5YTQ1NDAzYmFkYjE2NGQxZGEzMzlkODggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzM5MDk5MWFkNTlhNGFkOGI5MjVjYzYyNjg5YzJjNGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTRlYTMxNTY5YzdlNDczYzg2NTRhYzgwMTdiMDEzZGQgPSAkKCc8ZGl2IGlkPSJodG1sXzU0ZWEzMTU2OWM3ZTQ3M2M4NjU0YWM4MDE3YjAxM2RkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzM5MDk5MWFkNTlhNGFkOGI5MjVjYzYyNjg5YzJjNGEuc2V0Q29udGVudChodG1sXzU0ZWEzMTU2OWM3ZTQ3M2M4NjU0YWM4MDE3YjAxM2RkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RmNTJhYWU5OWE0NTQwM2JhZGIxNjRkMWRhMzM5ZDg4LmJpbmRQb3B1cChwb3B1cF83MzkwOTkxYWQ1OWE0YWQ4YjkyNWNjNjI2ODljMmM0YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NzA0ZDFjMzczOWM0ODI3OTQ2NWNjNTYwYWE5NjJjZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmFkZmM0MWUzZWU4NGM5YzkxMDgzZDVhYTRlY2NjMWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzYzNzExYmRjNDM3NGE0YTgwODM3ZGQzNzBlMzk5YWQgPSAkKCc8ZGl2IGlkPSJodG1sXzM2MzcxMWJkYzQzNzRhNGE4MDgzN2RkMzcwZTM5OWFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yYWRmYzQxZTNlZTg0YzljOTEwODNkNWFhNGVjY2MxZi5zZXRDb250ZW50KGh0bWxfMzYzNzExYmRjNDM3NGE0YTgwODM3ZGQzNzBlMzk5YWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODcwNGQxYzM3MzljNDgyNzk0NjVjYzU2MGFhOTYyY2UuYmluZFBvcHVwKHBvcHVwXzJhZGZjNDFlM2VlODRjOWM5MTA4M2Q1YWE0ZWNjYzFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJhYzY4ZjljOTQxODQ5ZWJiNDUxYjY1NTViYjYwODJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZGM4MmU5NDFhYmM0MjIwYjEyZmQzMDMxNWE3ODQ1MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMzMxNzQ1YjAzZWE0NTcwOGRiOTY1ZTNmNWQyY2NmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTMzMTc0NWIwM2VhNDU3MDhkYjk2NWUzZjVkMmNjZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wZGM4MmU5NDFhYmM0MjIwYjEyZmQzMDMxNWE3ODQ1Mi5zZXRDb250ZW50KGh0bWxfYTMzMTc0NWIwM2VhNDU3MDhkYjk2NWUzZjVkMmNjZjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmFjNjhmOWM5NDE4NDllYmI0NTFiNjU1NWJiNjA4MmEuYmluZFBvcHVwKHBvcHVwXzBkYzgyZTk0MWFiYzQyMjBiMTJmZDMwMzE1YTc4NDUyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzgxMTc1ZDVmMTVhZjQwMzRiMTNkODVkYzkxZjhiM2YzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ODczOGQyNjcyNmY0MmY5YWUxZTM2MjMyZWIyZGQzNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZWJjYzM5YzYxMTk0OWNkODBkZmRjODMwOGUyNmRhNSA9ICQoJzxkaXYgaWQ9Imh0bWxfYmViY2MzOWM2MTE5NDljZDgwZGZkYzgzMDhlMjZkYTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ODczOGQyNjcyNmY0MmY5YWUxZTM2MjMyZWIyZGQzNC5zZXRDb250ZW50KGh0bWxfYmViY2MzOWM2MTE5NDljZDgwZGZkYzgzMDhlMjZkYTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODExNzVkNWYxNWFmNDAzNGIxM2Q4NWRjOTFmOGIzZjMuYmluZFBvcHVwKHBvcHVwXzk4NzM4ZDI2NzI2ZjQyZjlhZTFlMzYyMzJlYjJkZDM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdhZGQxZmJlYjE1YjRhMTJiMWM5ZDVkZmU2MjRkOTM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZlM2Y0MDkxMjYyMjRmZTdiODNmNTE2OWM2ODVmOTE0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U5NmFiMzVkYzRhZDQ0MjZhMjVlYjIzOWY1MDVjMzI0ID0gJCgnPGRpdiBpZD0iaHRtbF9lOTZhYjM1ZGM0YWQ0NDI2YTI1ZWIyMzlmNTA1YzMyNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmUzZjQwOTEyNjIyNGZlN2I4M2Y1MTY5YzY4NWY5MTQuc2V0Q29udGVudChodG1sX2U5NmFiMzVkYzRhZDQ0MjZhMjVlYjIzOWY1MDVjMzI0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdhZGQxZmJlYjE1YjRhMTJiMWM5ZDVkZmU2MjRkOTM5LmJpbmRQb3B1cChwb3B1cF82ZTNmNDA5MTI2MjI0ZmU3YjgzZjUxNjljNjg1ZjkxNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YzYyZjMzOWI3OTA0Y2RjOGMxZGExMjVhYjU1N2Y2YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lN2U3MGM5YjNmYjg0NWJjOGU4NDI0YTZlMzcwYTVkMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYmRmYTEwM2VkN2U0YzJmOTUyNjEzNWRkZmEwZGRkZSA9ICQoJzxkaXYgaWQ9Imh0bWxfM2JkZmExMDNlZDdlNGMyZjk1MjYxMzVkZGZhMGRkZGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lN2U3MGM5YjNmYjg0NWJjOGU4NDI0YTZlMzcwYTVkMC5zZXRDb250ZW50KGh0bWxfM2JkZmExMDNlZDdlNGMyZjk1MjYxMzVkZGZhMGRkZGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGM2MmYzMzliNzkwNGNkYzhjMWRhMTI1YWI1NTdmNmMuYmluZFBvcHVwKHBvcHVwX2U3ZTcwYzliM2ZiODQ1YmM4ZTg0MjRhNmUzNzBhNWQwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUzMzVlZTIyMDVjYjRjZTc4NWJkMGI1MmJjZGQxMTcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlmZWQ2ZjAyNjJhODRjODA5OWQ2ZWQ3MmMwYWM5NDlhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkMDJmMGNhZDI5YTQ1NWE4Y2Y5MzFhYTQzZTIxM2JlID0gJCgnPGRpdiBpZD0iaHRtbF84ZDAyZjBjYWQyOWE0NTVhOGNmOTMxYWE0M2UyMTNiZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzlmZWQ2ZjAyNjJhODRjODA5OWQ2ZWQ3MmMwYWM5NDlhLnNldENvbnRlbnQoaHRtbF84ZDAyZjBjYWQyOWE0NTVhOGNmOTMxYWE0M2UyMTNiZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MzM1ZWUyMjA1Y2I0Y2U3ODViZDBiNTJiY2RkMTE3MC5iaW5kUG9wdXAocG9wdXBfOWZlZDZmMDI2MmE4NGM4MDk5ZDZlZDcyYzBhYzk0OWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjBiYWYwZGQ2Y2UxNDVkNTk5ZWFjMjc3NjZjYjFhM2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjMwOGM2NzdkNzBiNDQzNGI2NjUzMjU3OWY2MjM1ODEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTBiM2I5OGRjOTk4NDMwNWJiMTMyZmU3OGQyZTA2ZTkgPSAkKCc8ZGl2IGlkPSJodG1sX2EwYjNiOThkYzk5ODQzMDViYjEzMmZlNzhkMmUwNmU5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjMwOGM2NzdkNzBiNDQzNGI2NjUzMjU3OWY2MjM1ODEuc2V0Q29udGVudChodG1sX2EwYjNiOThkYzk5ODQzMDViYjEzMmZlNzhkMmUwNmU5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzIwYmFmMGRkNmNlMTQ1ZDU5OWVhYzI3NzY2Y2IxYTNlLmJpbmRQb3B1cChwb3B1cF8yMzA4YzY3N2Q3MGI0NDM0YjY2NTMyNTc5ZjYyMzU4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZjNlNTIzZjUzNmY0ZmRlYmM2NzZiZTc5NTE5N2UzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDAzNzk5OTUxMjc5NSwtMTIyLjQwNDU5NDE0MDYzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RhNDE2YTA0YzZmYjRjM2Y4MDI1MWMyYThiMWI0OTdiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI2MzI4YzliZjIyNDQwNmM4NjQzYjdkMjU1Mzc0MjdhID0gJCgnPGRpdiBpZD0iaHRtbF8yNjMyOGM5YmYyMjQ0MDZjODY0M2I3ZDI1NTM3NDI3YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYTQxNmEwNGM2ZmI0YzNmODAyNTFjMmE4YjFiNDk3Yi5zZXRDb250ZW50KGh0bWxfMjYzMjhjOWJmMjI0NDA2Yzg2NDNiN2QyNTUzNzQyN2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGYzZTUyM2Y1MzZmNGZkZWJjNjc2YmU3OTUxOTdlM2YuYmluZFBvcHVwKHBvcHVwX2RhNDE2YTA0YzZmYjRjM2Y4MDI1MWMyYThiMWI0OTdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IxYjRiZTYxNzdmYjQwNWI5ZmJlMjY1NDA4YzhkYjgyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FkYzVmOTIwYzBkMDRlNDliOTYzYThjMmIxMjVhZTdiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRiYmYwN2FhYmM3ZDQwZDU4YjE1YzFmYWFlZDcwYzI2ID0gJCgnPGRpdiBpZD0iaHRtbF80YmJmMDdhYWJjN2Q0MGQ1OGIxNWMxZmFhZWQ3MGMyNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZGM1ZjkyMGMwZDA0ZTQ5Yjk2M2E4YzJiMTI1YWU3Yi5zZXRDb250ZW50KGh0bWxfNGJiZjA3YWFiYzdkNDBkNThiMTVjMWZhYWVkNzBjMjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjFiNGJlNjE3N2ZiNDA1YjlmYmUyNjU0MDhjOGRiODIuYmluZFBvcHVwKHBvcHVwX2FkYzVmOTIwYzBkMDRlNDliOTYzYThjMmIxMjVhZTdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdkNWY0ZmNlNjQ4MzRlNWU4MzY1YWZhZDY1MTBjMDQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGQ2NjI1NjIxNDZhNDBhNmFkNWMzMWJhYmY0ZjQ2Y2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjZmNGU0OTE4NTM3NDc2M2E5NTQ4NDU1NDZhYmQ0MzAgPSAkKCc8ZGl2IGlkPSJodG1sX2Y2ZjRlNDkxODUzNzQ3NjNhOTU0ODQ1NTQ2YWJkNDMwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGQ2NjI1NjIxNDZhNDBhNmFkNWMzMWJhYmY0ZjQ2Y2Iuc2V0Q29udGVudChodG1sX2Y2ZjRlNDkxODUzNzQ3NjNhOTU0ODQ1NTQ2YWJkNDMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdkNWY0ZmNlNjQ4MzRlNWU4MzY1YWZhZDY1MTBjMDQwLmJpbmRQb3B1cChwb3B1cF80ZDY2MjU2MjE0NmE0MGE2YWQ1YzMxYmFiZjRmNDZjYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNWM2YjI2YTRkMzg0Nzc5ODJiOGJlMjkyM2M4NzE5OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMDM2MjYzM2M2MWU0ODU4OGFjNWQ1NWMzNmUyMjNjMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NDFmZDhjMzViMGY0ZDBlOTY1YzBmNWRiYjEwODQwYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjQxZmQ4YzM1YjBmNGQwZTk2NWMwZjVkYmIxMDg0MGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBST1NUSVRVVElPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTAzNjI2MzNjNjFlNDg1ODhhYzVkNTVjMzZlMjIzYzEuc2V0Q29udGVudChodG1sXzY0MWZkOGMzNWIwZjRkMGU5NjVjMGY1ZGJiMTA4NDBiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q1YzZiMjZhNGQzODQ3Nzk4MmI4YmUyOTIzYzg3MTk4LmJpbmRQb3B1cChwb3B1cF9hMDM2MjYzM2M2MWU0ODU4OGFjNWQ1NWMzNmUyMjNjMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZmJkYWM5ZGYxN2Q0NGQwOTFjYWExMjFlMGI2N2Y4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MzlmM2ZlYjVlMDA0ZGMzYmE5ODdkMTE0MzFlMjg2ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YTEyNjE0MTc2MTI0NGFkYjkzNjFmYjBiNmJhNDFlZCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWExMjYxNDE3NjEyNDRhZGI5MzYxZmIwYjZiYTQxZWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MzlmM2ZlYjVlMDA0ZGMzYmE5ODdkMTE0MzFlMjg2ZC5zZXRDb250ZW50KGh0bWxfOWExMjYxNDE3NjEyNDRhZGI5MzYxZmIwYjZiYTQxZWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWZiZGFjOWRmMTdkNDRkMDkxY2FhMTIxZTBiNjdmODkuYmluZFBvcHVwKHBvcHVwXzQzOWYzZmViNWUwMDRkYzNiYTk4N2QxMTQzMWUyODZkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY1ZjRmMTljN2I4YjQ1NGE4Y2E4Y2UzOTdhMzI3M2MwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NmEzY2M5MjIwNDM0Y2I1YTAxZmUxYjc4NTY1ZGM0MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNzE2YmU4YzhiNTU0YmI2OTdjYmRjZjM4NTM3ZWIyZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzcxNmJlOGM4YjU1NGJiNjk3Y2JkY2YzODUzN2ViMmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDZhM2NjOTIyMDQzNGNiNWEwMWZlMWI3ODU2NWRjNDIuc2V0Q29udGVudChodG1sXzM3MTZiZThjOGI1NTRiYjY5N2NiZGNmMzg1MzdlYjJlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzY1ZjRmMTljN2I4YjQ1NGE4Y2E4Y2UzOTdhMzI3M2MwLmJpbmRQb3B1cChwb3B1cF80NmEzY2M5MjIwNDM0Y2I1YTAxZmUxYjc4NTY1ZGM0Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNmFhNTRmNDM1OTI0MjA0ODQzZTRjM2NjN2RiMjNjZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmVkNjYzYTZhYjI4NGUzZGI0NzNmODg5M2ZmMGE2NWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGJkMmI1N2ZkZjMzNDdjMWI3ODQwN2Y2MGNiY2Q4M2YgPSAkKCc8ZGl2IGlkPSJodG1sXzBiZDJiNTdmZGYzMzQ3YzFiNzg0MDdmNjBjYmNkODNmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZWQ2NjNhNmFiMjg0ZTNkYjQ3M2Y4ODkzZmYwYTY1ZC5zZXRDb250ZW50KGh0bWxfMGJkMmI1N2ZkZjMzNDdjMWI3ODQwN2Y2MGNiY2Q4M2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjZhYTU0ZjQzNTkyNDIwNDg0M2U0YzNjYzdkYjIzY2QuYmluZFBvcHVwKHBvcHVwXzZlZDY2M2E2YWIyODRlM2RiNDczZjg4OTNmZjBhNjVkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhlODk4MjA2MDMxOTQ1OGM5YWFkNmEzN2U3YjNkNTRjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xY2M4OGViMzUzZTU0YmMyYjJhN2EzYzgxOTc0YTI3NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zODEzZmExYWZlZWU0YTAxOGRiYzc5OGI1NTNjNzdhNiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzgxM2ZhMWFmZWVlNGEwMThkYmM3OThiNTUzYzc3YTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xY2M4OGViMzUzZTU0YmMyYjJhN2EzYzgxOTc0YTI3Ny5zZXRDb250ZW50KGh0bWxfMzgxM2ZhMWFmZWVlNGEwMThkYmM3OThiNTUzYzc3YTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGU4OTgyMDYwMzE5NDU4YzlhYWQ2YTM3ZTdiM2Q1NGMuYmluZFBvcHVwKHBvcHVwXzFjYzg4ZWIzNTNlNTRiYzJiMmE3YTNjODE5NzRhMjc3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RkNGY1NTRkMTY3ODRhNjI5OTBhN2Y1MTExNGRmZTZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzY4MDAzY2ZlZjk0NDYxMzgwNTRlZWVhMTQ3MDAxYTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjdiMDAxOWI2YTZiNDAyNzk4N2NmNDJkOTIxMGYzNWEgPSAkKCc8ZGl2IGlkPSJodG1sXzY3YjAwMTliNmE2YjQwMjc5ODdjZjQyZDkyMTBmMzVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNjgwMDNjZmVmOTQ0NjEzODA1NGVlZWExNDcwMDFhOC5zZXRDb250ZW50KGh0bWxfNjdiMDAxOWI2YTZiNDAyNzk4N2NmNDJkOTIxMGYzNWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGQ0ZjU1NGQxNjc4NGE2Mjk5MGE3ZjUxMTE0ZGZlNmUuYmluZFBvcHVwKHBvcHVwX2M2ODAwM2NmZWY5NDQ2MTM4MDU0ZWVlYTE0NzAwMWE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzZjNmZWZlZDJjYzQ4NDdiNmFiZGM5ODUzODYyY2QwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5MjExNDY0NzM1OSwtMTIyLjQwMDgzNDI4MzAzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRhNDAxYjMzNTU5MzQyYzBiOGQ3YTljNmExYmU3MmVhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk5Y2I3NTkwZjE3YjRiY2FiMDcyZjkwOTQ5ZjJkZGIyID0gJCgnPGRpdiBpZD0iaHRtbF85OWNiNzU5MGYxN2I0YmNhYjA3MmY5MDk0OWYyZGRiMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRhNDAxYjMzNTU5MzQyYzBiOGQ3YTljNmExYmU3MmVhLnNldENvbnRlbnQoaHRtbF85OWNiNzU5MGYxN2I0YmNhYjA3MmY5MDk0OWYyZGRiMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wM2YzZmVmZWQyY2M0ODQ3YjZhYmRjOTg1Mzg2MmNkMC5iaW5kUG9wdXAocG9wdXBfNGE0MDFiMzM1NTkzNDJjMGI4ZDdhOWM2YTFiZTcyZWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTc0MmNlOTE0MWFhNDdiNDgwN2U5M2U4YjkzZWUxYzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNjU2NzM1ODBiNTk0MTI2ODY5OGFiYzk2M2U2MWUyMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kYmE1OTUwMGNjNGE0ZjBlOGYyOWM1OTk5MzNiYzcxNyA9ICQoJzxkaXYgaWQ9Imh0bWxfZGJhNTk1MDBjYzRhNGYwZThmMjljNTk5OTMzYmM3MTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y2NTY3MzU4MGI1OTQxMjY4Njk4YWJjOTYzZTYxZTIxLnNldENvbnRlbnQoaHRtbF9kYmE1OTUwMGNjNGE0ZjBlOGYyOWM1OTk5MzNiYzcxNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xNzQyY2U5MTQxYWE0N2I0ODA3ZTkzZThiOTNlZTFjMi5iaW5kUG9wdXAocG9wdXBfZjY1NjczNTgwYjU5NDEyNjg2OThhYmM5NjNlNjFlMjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjBlMjA3YWM0ZTQ4NDdhZDlmMzE4ZmMwNTcxMWQ1NGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UxYmUwY2RhMmQwODQxMzg4YTRlN2Y2YzI2NzY1MmY1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhlZjYxNTZiOGNlYjQ1NGY5ZTRiNTFiNzc1YjRiOWY3ID0gJCgnPGRpdiBpZD0iaHRtbF84ZWY2MTU2YjhjZWI0NTRmOWU0YjUxYjc3NWI0YjlmNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMWJlMGNkYTJkMDg0MTM4OGE0ZTdmNmMyNjc2NTJmNS5zZXRDb250ZW50KGh0bWxfOGVmNjE1NmI4Y2ViNDU0ZjllNGI1MWI3NzViNGI5ZjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjBlMjA3YWM0ZTQ4NDdhZDlmMzE4ZmMwNTcxMWQ1NGQuYmluZFBvcHVwKHBvcHVwX2UxYmUwY2RhMmQwODQxMzg4YTRlN2Y2YzI2NzY1MmY1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmMTc2Yjg0ZGJmMjQzMDM5ZmE0MzlkZjg3YTVjMmQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81Y2ZhMzI1ZWY5NDg0YTdlOTY5ZDFhODVmZTE4MmZjMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81OTJjMzdkYzI0MTE0ZjRhYmJhNDE1ZjA1Mzc5NzM0NyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTkyYzM3ZGMyNDExNGY0YWJiYTQxNWYwNTM3OTczNDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81Y2ZhMzI1ZWY5NDg0YTdlOTY5ZDFhODVmZTE4MmZjMi5zZXRDb250ZW50KGh0bWxfNTkyYzM3ZGMyNDExNGY0YWJiYTQxNWYwNTM3OTczNDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmYxNzZiODRkYmYyNDMwMzlmYTQzOWRmODdhNWMyZDYuYmluZFBvcHVwKHBvcHVwXzVjZmEzMjVlZjk0ODRhN2U5NjlkMWE4NWZlMTgyZmMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFjOWIwNzk1ZjZhMzQ1OGY4Y2ZmYjM3OGU2MmY4ZGRhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lZWNkOTJkMjMyN2Q0NTQyODcyNjFjNmRhMzIxNWJiNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNmRkZDdlNzQ5MmI0NmI1ODdkZmU3NjJlZTkzMGQ0NSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjZkZGQ3ZTc0OTJiNDZiNTg3ZGZlNzYyZWU5MzBkNDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZWNkOTJkMjMyN2Q0NTQyODcyNjFjNmRhMzIxNWJiNi5zZXRDb250ZW50KGh0bWxfMjZkZGQ3ZTc0OTJiNDZiNTg3ZGZlNzYyZWU5MzBkNDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWM5YjA3OTVmNmEzNDU4ZjhjZmZiMzc4ZTYyZjhkZGEuYmluZFBvcHVwKHBvcHVwX2VlY2Q5MmQyMzI3ZDQ1NDI4NzI2MWM2ZGEzMjE1YmI2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JiNjkyNTZkZmJmZDQ3ZDdiNmRiNDI3NDYzZGQxNTQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDQzZDU1N2RkYzQ2NGE3MmI5MTFjM2MyOGQ1MjEwNDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTJkNmVlZGI3OTM2NGJlMzkzOWNmOGRkYjA3OTA0YWYgPSAkKCc8ZGl2IGlkPSJodG1sXzUyZDZlZWRiNzkzNjRiZTM5MzljZjhkZGIwNzkwNGFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNDNkNTU3ZGRjNDY0YTcyYjkxMWMzYzI4ZDUyMTA0Ny5zZXRDb250ZW50KGh0bWxfNTJkNmVlZGI3OTM2NGJlMzkzOWNmOGRkYjA3OTA0YWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmI2OTI1NmRmYmZkNDdkN2I2ZGI0Mjc0NjNkZDE1NDMuYmluZFBvcHVwKHBvcHVwXzA0M2Q1NTdkZGM0NjRhNzJiOTExYzNjMjhkNTIxMDQ3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI4NDNkY2QzZjAwOTQyZTNhNDA1YTJjNzZhNGFiZWI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJiZGU5ODZmNmUyYjRlMjY5Zjg3MjI0MzNhN2Q0Zjk1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlhZjI3N2RhZWRkMjQ4NzQ4MjAwMzY0MmJhZjMyOTM1ID0gJCgnPGRpdiBpZD0iaHRtbF85YWYyNzdkYWVkZDI0ODc0ODIwMDM2NDJiYWYzMjkzNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJiZGU5ODZmNmUyYjRlMjY5Zjg3MjI0MzNhN2Q0Zjk1LnNldENvbnRlbnQoaHRtbF85YWYyNzdkYWVkZDI0ODc0ODIwMDM2NDJiYWYzMjkzNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yODQzZGNkM2YwMDk0MmUzYTQwNWEyYzc2YTRhYmViOS5iaW5kUG9wdXAocG9wdXBfMmJkZTk4NmY2ZTJiNGUyNjlmODcyMjQzM2E3ZDRmOTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTkwMmNlNTFiYzhjNDdmYmEwNGM1MGMzZDU5ODVmOWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGUwZDIyMGY3ZTk0NDkwZDgyMTFjOGJjODI2MWFmMDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzljNWQ2M2I0ZmQwNDIxNDljYzI0ZWVhYzBkMDI0NDAgPSAkKCc8ZGl2IGlkPSJodG1sXzc5YzVkNjNiNGZkMDQyMTQ5Y2MyNGVlYWMwZDAyNDQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBlMGQyMjBmN2U5NDQ5MGQ4MjExYzhiYzgyNjFhZjA0LnNldENvbnRlbnQoaHRtbF83OWM1ZDYzYjRmZDA0MjE0OWNjMjRlZWFjMGQwMjQ0MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85OTAyY2U1MWJjOGM0N2ZiYTA0YzUwYzNkNTk4NWY5YS5iaW5kUG9wdXAocG9wdXBfMGUwZDIyMGY3ZTk0NDkwZDgyMTFjOGJjODI2MWFmMDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjBhYTRkNjA4MjBiNDZlYmE2ZjFkZGFjZjBhNmVlMDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JjYjdmODI1ZjA0ZjQ4NzBiMzk0OWVkMWFjMGJmN2QzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNiM2MwNWJkMjhhNjQyZmJhOWUwOTE5NTJjMDQ4ZWQ3ID0gJCgnPGRpdiBpZD0iaHRtbF8zYjNjMDViZDI4YTY0MmZiYTllMDkxOTUyYzA0OGVkNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iY2I3ZjgyNWYwNGY0ODcwYjM5NDllZDFhYzBiZjdkMy5zZXRDb250ZW50KGh0bWxfM2IzYzA1YmQyOGE2NDJmYmE5ZTA5MTk1MmMwNDhlZDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjBhYTRkNjA4MjBiNDZlYmE2ZjFkZGFjZjBhNmVlMDAuYmluZFBvcHVwKHBvcHVwX2JjYjdmODI1ZjA0ZjQ4NzBiMzk0OWVkMWFjMGJmN2QzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMxZGY2NWQyYWE5ZDQ1ODliMWNkMzYwNzk1ZjZhNDFkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEyNzY3ODg0ODIxLC0xMjIuNDMxOTI4MDExMDg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDkzMGI1NmJkZjNjNDMxZWI4ZTBiZDkwNDg5OWFlMzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWE4ODE3OTA3YjU3NDAyY2FmMjcxMzQ0NTdlMGM2ODAgPSAkKCc8ZGl2IGlkPSJodG1sXzFhODgxNzkwN2I1NzQwMmNhZjI3MTM0NDU3ZTBjNjgwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDkzMGI1NmJkZjNjNDMxZWI4ZTBiZDkwNDg5OWFlMzIuc2V0Q29udGVudChodG1sXzFhODgxNzkwN2I1NzQwMmNhZjI3MTM0NDU3ZTBjNjgwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMxZGY2NWQyYWE5ZDQ1ODliMWNkMzYwNzk1ZjZhNDFkLmJpbmRQb3B1cChwb3B1cF9kOTMwYjU2YmRmM2M0MzFlYjhlMGJkOTA0ODk5YWUzMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZmQ1NGFmNmY1M2Y0ZTY2YjljNzM3ZWZjZTg1OTEzMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNmJjNGM3ODdkMDI0NWE0OWQ5ZDliZjE5MzVhZmJkOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZTBiMGNmODYxNWU0ZDhiYTNjYzM3MzlhMjA0NTM2YyA9ICQoJzxkaXYgaWQ9Imh0bWxfY2UwYjBjZjg2MTVlNGQ4YmEzY2MzNzM5YTIwNDUzNmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVU5LRU5ORVNTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNmJjNGM3ODdkMDI0NWE0OWQ5ZDliZjE5MzVhZmJkOS5zZXRDb250ZW50KGh0bWxfY2UwYjBjZjg2MTVlNGQ4YmEzY2MzNzM5YTIwNDUzNmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWZkNTRhZjZmNTNmNGU2NmI5YzczN2VmY2U4NTkxMzAuYmluZFBvcHVwKHBvcHVwX2E2YmM0Yzc4N2QwMjQ1YTQ5ZDlkOWJmMTkzNWFmYmQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwMTlmYWMxM2IzYTQwM2E4NDgxZmI5NWFiNDlkMDUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcwNzkxMjc5MDUyYzRlMmE4OTNmYjczN2NhYWZmZDg3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxMjhjOGIzOTgzNDRjODk5ZjA5ZmE0NWM1ODlkNjJjID0gJCgnPGRpdiBpZD0iaHRtbF80MTI4YzhiMzk4MzQ0Yzg5OWYwOWZhNDVjNTg5ZDYyYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcwNzkxMjc5MDUyYzRlMmE4OTNmYjczN2NhYWZmZDg3LnNldENvbnRlbnQoaHRtbF80MTI4YzhiMzk4MzQ0Yzg5OWYwOWZhNDVjNTg5ZDYyYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MDE5ZmFjMTNiM2E0MDNhODQ4MWZiOTVhYjQ5ZDA1Mi5iaW5kUG9wdXAocG9wdXBfNzA3OTEyNzkwNTJjNGUyYTg5M2ZiNzM3Y2FhZmZkODcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTdiOTE4ZmFlMGQ1NDgyMjg3YzUxZmUxYTBmNTlmOGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM4MzY1NTY1MzQ3OTQsLTEyMi40MTM3OTA5NzI3ODA5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5MjVhMGExZjFjMTQxODE5ZTFiZDYzNDQ2NDM5YWI4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk1NWUzYzA1ZmI3MjRiZDY5Y2IzZDRjMzNjZWM1NDk3ID0gJCgnPGRpdiBpZD0iaHRtbF85NTVlM2MwNWZiNzI0YmQ2OWNiM2Q0YzMzY2VjNTQ5NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OTI1YTBhMWYxYzE0MTgxOWUxYmQ2MzQ0NjQzOWFiOC5zZXRDb250ZW50KGh0bWxfOTU1ZTNjMDVmYjcyNGJkNjljYjNkNGMzM2NlYzU0OTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTdiOTE4ZmFlMGQ1NDgyMjg3YzUxZmUxYTBmNTlmOGEuYmluZFBvcHVwKHBvcHVwXzc5MjVhMGExZjFjMTQxODE5ZTFiZDYzNDQ2NDM5YWI4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJiOTk4ZGIyNjBhMjQxNGU5ZGU4NDcwMWE1YTUwMjhiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJlYmY3ZGQ5MDFkODRmZTc5NzQ2OWNhY2IyMTM1MTA4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzczMjVjNDMwMjFkYTQyNDY4YzFiNjg4MjkzM2JkZGMyID0gJCgnPGRpdiBpZD0iaHRtbF83MzI1YzQzMDIxZGE0MjQ2OGMxYjY4ODI5MzNiZGRjMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJlYmY3ZGQ5MDFkODRmZTc5NzQ2OWNhY2IyMTM1MTA4LnNldENvbnRlbnQoaHRtbF83MzI1YzQzMDIxZGE0MjQ2OGMxYjY4ODI5MzNiZGRjMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yYjk5OGRiMjYwYTI0MTRlOWRlODQ3MDFhNWE1MDI4Yi5iaW5kUG9wdXAocG9wdXBfMmViZjdkZDkwMWQ4NGZlNzk3NDY5Y2FjYjIxMzUxMDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzk5N2JhMWJmYjFhNGY5NmI2OTkyYzEyZDg1ZDY3MzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xN2Y3ZWQzMGVhMDY0Y2YxYmU0NTE5YTMyOTFjYzQwZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82N2I4NDhkNjFjNzM0NzdjOTlkZWUyZDlmMmYwMjFlNCA9ICQoJzxkaXYgaWQ9Imh0bWxfNjdiODQ4ZDYxYzczNDc3Yzk5ZGVlMmQ5ZjJmMDIxZTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTdmN2VkMzBlYTA2NGNmMWJlNDUxOWEzMjkxY2M0MGYuc2V0Q29udGVudChodG1sXzY3Yjg0OGQ2MWM3MzQ3N2M5OWRlZTJkOWYyZjAyMWU0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M5OTdiYTFiZmIxYTRmOTZiNjk5MmMxMmQ4NWQ2NzMxLmJpbmRQb3B1cChwb3B1cF8xN2Y3ZWQzMGVhMDY0Y2YxYmU0NTE5YTMyOTFjYzQwZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hN2ZjYzNhYjU1MWI0MDk1YTI0ZGU0YjNjOTg1M2EwZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UwNzE4M2Q4NWI1YTQ4ZDg4ZmRhMDhhNzgwZDU2NjA1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NjNDJjMTUyZWM1NTRjNjhiYjg5M2U5M2NhNzY2YzMzID0gJCgnPGRpdiBpZD0iaHRtbF9jYzQyYzE1MmVjNTU0YzY4YmI4OTNlOTNjYTc2NmMzMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMDcxODNkODViNWE0OGQ4OGZkYTA4YTc4MGQ1NjYwNS5zZXRDb250ZW50KGh0bWxfY2M0MmMxNTJlYzU1NGM2OGJiODkzZTkzY2E3NjZjMzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTdmY2MzYWI1NTFiNDA5NWEyNGRlNGIzYzk4NTNhMGYuYmluZFBvcHVwKHBvcHVwX2UwNzE4M2Q4NWI1YTQ4ZDg4ZmRhMDhhNzgwZDU2NjA1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VkNWM1NGQzOTliNzQyZjdiNjMyYzk2ZDJlZWQwNDM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjNkMDM3MDgzMGU4NDA1ODg0MjQ4Yzk4ZjY1NTdlNWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjUyYzE4NDhiOGU5NDA3NGFjZDBkOTg4NzhiOWNhMjIgPSAkKCc8ZGl2IGlkPSJodG1sXzY1MmMxODQ4YjhlOTQwNzRhY2QwZDk4ODc4YjljYTIyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjNkMDM3MDgzMGU4NDA1ODg0MjQ4Yzk4ZjY1NTdlNWEuc2V0Q29udGVudChodG1sXzY1MmMxODQ4YjhlOTQwNzRhY2QwZDk4ODc4YjljYTIyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VkNWM1NGQzOTliNzQyZjdiNjMyYzk2ZDJlZWQwNDM5LmJpbmRQb3B1cChwb3B1cF9iM2QwMzcwODMwZTg0MDU4ODQyNDhjOThmNjU1N2U1YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wOTEzNjliNmU4Zjk0MzRkYTczYzMxMGExNDg0ZjgxNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NkMThlMThlMjk2MDQ1MzM5NGEzM2NjYzdjYjNlZWIwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk4OTQ5NTJlMzVkNzRkZmY4MzIxYjE3NmQ3NTM0YzkyID0gJCgnPGRpdiBpZD0iaHRtbF85ODk0OTUyZTM1ZDc0ZGZmODMyMWIxNzZkNzUzNGM5MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NkMThlMThlMjk2MDQ1MzM5NGEzM2NjYzdjYjNlZWIwLnNldENvbnRlbnQoaHRtbF85ODk0OTUyZTM1ZDc0ZGZmODMyMWIxNzZkNzUzNGM5Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wOTEzNjliNmU4Zjk0MzRkYTczYzMxMGExNDg0ZjgxNS5iaW5kUG9wdXAocG9wdXBfY2QxOGUxOGUyOTYwNDUzMzk0YTMzY2NjN2NiM2VlYjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDI0ZTBjZTMwMTM4NDNjODhlZjBhOThkOTE0Njc1NmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODUwMjI2NjIyNzg2LC0xMjIuNDExOTg3NjQzNTk1MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMTY2MzJhYzFkNTE0Y2ZiYjk2N2E3MmZiNGM3OTg2ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MThhNDA2NzgzMGE0YTdmODViMTg2YWZlMjdhMGY3MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYWU4MTc5ZmY4NDI0NDcwOWFiMjU0MzllMDZiMGFlNiA9ICQoJzxkaXYgaWQ9Imh0bWxfZmFlODE3OWZmODQyNDQ3MDlhYjI1NDM5ZTA2YjBhZTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODE4YTQwNjc4MzBhNGE3Zjg1YjE4NmFmZTI3YTBmNzEuc2V0Q29udGVudChodG1sX2ZhZTgxNzlmZjg0MjQ0NzA5YWIyNTQzOWUwNmIwYWU2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2QyNGUwY2UzMDEzODQzYzg4ZWYwYTk4ZDkxNDY3NTZhLmJpbmRQb3B1cChwb3B1cF84MThhNDA2NzgzMGE0YTdmODViMTg2YWZlMjdhMGY3MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZDEwZDNlMjNlNWI0ZjcyOTM3OTE3Y2E2MTUwOTQ1MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY0ZDdiZGZmYjM2ZDQ2ZmJiNTI1Y2Y1NDMyM2UxOGU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRjYmJkYjA4ZjY0ZTQwYTQ5YTg2NTY5ZDY3MTRkOWNjID0gJCgnPGRpdiBpZD0iaHRtbF80Y2JiZGIwOGY2NGU0MGE0OWE4NjU2OWQ2NzE0ZDljYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY0ZDdiZGZmYjM2ZDQ2ZmJiNTI1Y2Y1NDMyM2UxOGU3LnNldENvbnRlbnQoaHRtbF80Y2JiZGIwOGY2NGU0MGE0OWE4NjU2OWQ2NzE0ZDljYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jZDEwZDNlMjNlNWI0ZjcyOTM3OTE3Y2E2MTUwOTQ1MC5iaW5kUG9wdXAocG9wdXBfNjRkN2JkZmZiMzZkNDZmYmI1MjVjZjU0MzIzZTE4ZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjkxNTQxNzZmMTg2NGE5ZDhkOTQ5ZmJmM2M1NmMxODEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGI3MzczYzdlMmExNDk1OGFkYjUwNTA1MWU4NmQyMDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGVmNmE4YThjYTllNDY1NmFmY2Y0MmZkYzE2MGY0ZDMgPSAkKCc8ZGl2IGlkPSJodG1sXzRlZjZhOGE4Y2E5ZTQ2NTZhZmNmNDJmZGMxNjBmNGQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YjczNzNjN2UyYTE0OTU4YWRiNTA1MDUxZTg2ZDIwNS5zZXRDb250ZW50KGh0bWxfNGVmNmE4YThjYTllNDY1NmFmY2Y0MmZkYzE2MGY0ZDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjkxNTQxNzZmMTg2NGE5ZDhkOTQ5ZmJmM2M1NmMxODEuYmluZFBvcHVwKHBvcHVwXzhiNzM3M2M3ZTJhMTQ5NThhZGI1MDUwNTFlODZkMjA1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ5NWM3M2QwNjhhMTRmZjZhYzA5MjFmNDMwMjhiNDYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQ5MDg0MTcyOTAyOCwtMTIyLjQ4NjkyNTk2MDExNDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzc4ZjFlZTQxOWUyNGZjZWEzZGUxNjY1ZDUzM2QzYjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWM2MjMzNTA2OTE1NGQxMTlmMzUxYzBlZDkzYWQ3OGEgPSAkKCc8ZGl2IGlkPSJodG1sXzljNjIzMzUwNjkxNTRkMTE5ZjM1MWMwZWQ5M2FkNzhhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzc4ZjFlZTQxOWUyNGZjZWEzZGUxNjY1ZDUzM2QzYjAuc2V0Q29udGVudChodG1sXzljNjIzMzUwNjkxNTRkMTE5ZjM1MWMwZWQ5M2FkNzhhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ5NWM3M2QwNjhhMTRmZjZhYzA5MjFmNDMwMjhiNDYzLmJpbmRQb3B1cChwb3B1cF9jNzhmMWVlNDE5ZTI0ZmNlYTNkZTE2NjVkNTMzZDNiMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYmU4M2M0YWZmNzQ0ODQ5YWVhOTEzMmQ3Y2FhNGI0OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI1NjAyMzE4ZDY1OTQ2ODQ5MjU0NGRhY2VmNWQwODRiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MyZTEzOWJmN2Q2ZjQzMWViMWY3MTRjMTZiYThlNDhjID0gJCgnPGRpdiBpZD0iaHRtbF9jMmUxMzliZjdkNmY0MzFlYjFmNzE0YzE2YmE4ZTQ4YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNTYwMjMxOGQ2NTk0Njg0OTI1NDRkYWNlZjVkMDg0Yi5zZXRDb250ZW50KGh0bWxfYzJlMTM5YmY3ZDZmNDMxZWIxZjcxNGMxNmJhOGU0OGMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGJlODNjNGFmZjc0NDg0OWFlYTkxMzJkN2NhYTRiNDkuYmluZFBvcHVwKHBvcHVwXzI1NjAyMzE4ZDY1OTQ2ODQ5MjU0NGRhY2VmNWQwODRiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzYzMwZjJlNTM0MDQzMTM5YTA0MGM0MWU4M2IzMTU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNjYzMmFjMWQ1MTRjZmJiOTY3YTcyZmI0Yzc5ODZkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U0NmM4MDg1OTQ3ZDQyMjQ5ZjM1ZTMzYWJmNjM2MGM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UzYmViNTYyMTdiNTQ5NzJiZmRiZjQwNmQxODhmNWI2ID0gJCgnPGRpdiBpZD0iaHRtbF9lM2JlYjU2MjE3YjU0OTcyYmZkYmY0MDZkMTg4ZjViNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U0NmM4MDg1OTQ3ZDQyMjQ5ZjM1ZTMzYWJmNjM2MGM4LnNldENvbnRlbnQoaHRtbF9lM2JlYjU2MjE3YjU0OTcyYmZkYmY0MDZkMTg4ZjViNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yM2MzMGYyZTUzNDA0MzEzOWEwNDBjNDFlODNiMzE1NS5iaW5kUG9wdXAocG9wdXBfZTQ2YzgwODU5NDdkNDIyNDlmMzVlMzNhYmY2MzYwYzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODlhODFkNDdjNGU1NDMzZjgyNDg1YWUyNDUyYTE3OTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmYyOWVjMGJlMzg4NGY0MTk2MTE1MjI2MmRkMDMxYzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzU1Zjg1NWJkMjc0NDkzZDkwZTBmYmE0NzFhOTUwOWIgPSAkKCc8ZGl2IGlkPSJodG1sXzc1NWY4NTViZDI3NDQ5M2Q5MGUwZmJhNDcxYTk1MDliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZjI5ZWMwYmUzODg0ZjQxOTYxMTUyMjYyZGQwMzFjOS5zZXRDb250ZW50KGh0bWxfNzU1Zjg1NWJkMjc0NDkzZDkwZTBmYmE0NzFhOTUwOWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODlhODFkNDdjNGU1NDMzZjgyNDg1YWUyNDUyYTE3OTkuYmluZFBvcHVwKHBvcHVwXzJmMjllYzBiZTM4ODRmNDE5NjExNTIyNjJkZDAzMWM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNhYzIwMjZkMTk2MTQzMzlhZmYxNWQ5MWIzMjg1ZjUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE2NjMyYWMxZDUxNGNmYmI5NjdhNzJmYjRjNzk4NmQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDNjNzJjZWFkZmZhNGJmOTkzMDZlZTYyM2UxOGIxMmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmJlZDE2NzkyNmQ3NDU5ZGJjYzVkZWUyN2VkOTA2NmYgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiZWQxNjc5MjZkNzQ1OWRiY2M1ZGVlMjdlZDkwNjZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80M2M3MmNlYWRmZmE0YmY5OTMwNmVlNjIzZTE4YjEyZS5zZXRDb250ZW50KGh0bWxfZmJlZDE2NzkyNmQ3NDU5ZGJjYzVkZWUyN2VkOTA2NmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2FjMjAyNmQxOTYxNDMzOWFmZjE1ZDkxYjMyODVmNTAuYmluZFBvcHVwKHBvcHVwXzQzYzcyY2VhZGZmYTRiZjk5MzA2ZWU2MjNlMThiMTJlKTsKCiAgICAgICAgICAgIAogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7faffbec7b00>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# loop through the 100 crimes and add each to the map\n",
"for lat, lng, label in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" popup=label,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" ).add_to(sanfran_map)\n",
"\n",
"# show map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"The other proper remedy is to group the markers into different clusters. Each cluster is then represented by the number of crimes in each neighborhood. These clusters can be thought of as pockets of San Francisco which you can then analyze separately.\n",
"\n",
"To implement this, we start off by instantiating a *MarkerCluster* object and adding all the data points in the dataframe to this object."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNjYzNjNjMGRhOTBjNGI1MjlkNDBmYjhkNzRjMzVlYzcgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF82NjM2M2MwZGE5MGM0YjUyOWQ0MGZiOGQ3NGMzNWVjNyIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfNjYzNjNjMGRhOTBjNGI1MjlkNDBmYjhkNzRjMzVlYzcgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfNjYzNjNjMGRhOTBjNGI1MjlkNDBmYjhkNzRjMzVlYzcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWzM3Ljc3LC0xMjIuNDJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzIzOGNmMWI0NjQ0MjQ3MTE4ZThmMjFiNTE0NzE5Zjc0ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzY2MzYzYzBkYTkwYzRiNTI5ZDQwZmI4ZDc0YzM1ZWM3KTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEgPSBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF82NjM2M2MwZGE5MGM0YjUyOWQ0MGZiOGQ3NGMzNWVjNy5hZGRMYXllcihtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU4ZGE3N2RjMWJiZTQzMzhiNTljYzBlYWRiMTA1YTI4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFjNzhjNzQ3ZDMxZDQwODNiNzc5YzlmOWI3MTY1ZmU4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc2ZmNiZjEyYjk1NzRiZjNiMmQxNmY4ODg0YWE5OTM5ID0gJCgnPGRpdiBpZD0iaHRtbF83NmZjYmYxMmI5NTc0YmYzYjJkMTZmODg4NGFhOTkzOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0VBUE9OIExBV1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFjNzhjNzQ3ZDMxZDQwODNiNzc5YzlmOWI3MTY1ZmU4LnNldENvbnRlbnQoaHRtbF83NmZjYmYxMmI5NTc0YmYzYjJkMTZmODg4NGFhOTkzOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzU4ZGE3N2RjMWJiZTQzMzhiNTljYzBlYWRiMTA1YTI4LmJpbmRQb3B1cChwb3B1cF8xYzc4Yzc0N2QzMWQ0MDgzYjc3OWM5ZjliNzE2NWZlOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85YWNhN2RiNTE1ODc0YzczYTEwMjU2MzYxMTc1OGUxZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NTViNDExNmFhMTg0MmRjOTU3MjkxYmMyZjJiMmJjMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MTdmYTlkOGE1ZGU0MDkzOWJjYTRkNmFlMTNlM2I2ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTE3ZmE5ZDhhNWRlNDA5MzliY2E0ZDZhZTEzZTNiNmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NTViNDExNmFhMTg0MmRjOTU3MjkxYmMyZjJiMmJjMS5zZXRDb250ZW50KGh0bWxfNTE3ZmE5ZDhhNWRlNDA5MzliY2E0ZDZhZTEzZTNiNmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85YWNhN2RiNTE1ODc0YzczYTEwMjU2MzYxMTc1OGUxZi5iaW5kUG9wdXAocG9wdXBfNTU1YjQxMTZhYTE4NDJkYzk1NzI5MWJjMmYyYjJiYzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTNiMjE1ZTBkYWNmNDQ5OWE1ZTYzMWJmZjEyNjRiN2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NkM2MzMGY3MTM2MDQyZWE4NGUwYTlkYmI4MDlkMDZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBiY2IxMGIxYjQyNDRiNmNhNjkyNGJmN2YzZTljYzE0ID0gJCgnPGRpdiBpZD0iaHRtbF8wYmNiMTBiMWI0MjQ0YjZjYTY5MjRiZjdmM2U5Y2MxNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NkM2MzMGY3MTM2MDQyZWE4NGUwYTlkYmI4MDlkMDZjLnNldENvbnRlbnQoaHRtbF8wYmNiMTBiMWI0MjQ0YjZjYTY5MjRiZjdmM2U5Y2MxNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzEzYjIxNWUwZGFjZjQ0OTlhNWU2MzFiZmYxMjY0YjdjLmJpbmRQb3B1cChwb3B1cF9jZDNjMzBmNzEzNjA0MmVhODRlMGE5ZGJiODA5ZDA2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82OTM3NzgxYmE3OGQ0NjJkOTA0ZmJjOTZjYThmN2FiMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wOWUyN2FiZjk4YWQ0Mzg5YTJiYWYzODUwNjM5YzM5NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZGI1M2Q4YTkyODI0NDgwYjU5MWZlYzMxMzRlMGIyNyA9ICQoJzxkaXYgaWQ9Imh0bWxfNWRiNTNkOGE5MjgyNDQ4MGI1OTFmZWMzMTM0ZTBiMjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDllMjdhYmY5OGFkNDM4OWEyYmFmMzg1MDYzOWMzOTcuc2V0Q29udGVudChodG1sXzVkYjUzZDhhOTI4MjQ0ODBiNTkxZmVjMzEzNGUwYjI3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjkzNzc4MWJhNzhkNDYyZDkwNGZiYzk2Y2E4ZjdhYjAuYmluZFBvcHVwKHBvcHVwXzA5ZTI3YWJmOThhZDQzODlhMmJhZjM4NTA2MzljMzk3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I1ZTY5Yzg3YmQxZjRiOWI4YmFiYWY0OTc0NWQ0ZWE3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1MDUwMTIxNDY2OCwtMTIyLjQxOTY3MTc4MDI5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGQ4MThiZDJlZWEzNGQyZTk3NDdlOTZlMTc3ZjEyNGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTExODgxNDkwODEwNGMxZjgwZmM5N2Q4MDhlM2JkZmMgPSAkKCc8ZGl2IGlkPSJodG1sXzUxMTg4MTQ5MDgxMDRjMWY4MGZjOTdkODA4ZTNiZGZjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBkODE4YmQyZWVhMzRkMmU5NzQ3ZTk2ZTE3N2YxMjRkLnNldENvbnRlbnQoaHRtbF81MTE4ODE0OTA4MTA0YzFmODBmYzk3ZDgwOGUzYmRmYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I1ZTY5Yzg3YmQxZjRiOWI4YmFiYWY0OTc0NWQ0ZWE3LmJpbmRQb3B1cChwb3B1cF8wZDgxOGJkMmVlYTM0ZDJlOTc0N2U5NmUxNzdmMTI0ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85ZTk0MjAzOTEzNjY0MGRmYjNhY2FjZjI2NDgxODFhNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMDg3ODczZjQxMTc0NGNmYThjNzYxYTQ2NDJmMTQwNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lM2Q4MjExNzY4Nzc0NjlhYTQ4ZTVjNjllMzAxZTE0NyA9ICQoJzxkaXYgaWQ9Imh0bWxfZTNkODIxMTc2ODc3NDY5YWE0OGU1YzY5ZTMwMWUxNDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAwODc4NzNmNDExNzQ0Y2ZhOGM3NjFhNDY0MmYxNDA3LnNldENvbnRlbnQoaHRtbF9lM2Q4MjExNzY4Nzc0NjlhYTQ4ZTVjNjllMzAxZTE0Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzllOTQyMDM5MTM2NjQwZGZiM2FjYWNmMjY0ODE4MWE0LmJpbmRQb3B1cChwb3B1cF8wMDg3ODczZjQxMTc0NGNmYThjNzYxYTQ2NDJmMTQwNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jNDlmZTU0YTIyMWI0NjFkYjM3Y2UwZjAwMDdmZGQ4ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcyZGJjNjNkY2E0YjQzYTNiYjdhN2Y1MDkyMTE4NmJhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I1OWVhYmQ2OTQ2YjRjNjZiNmYzMDhjMDdiNWY2NGFkID0gJCgnPGRpdiBpZD0iaHRtbF9iNTllYWJkNjk0NmI0YzY2YjZmMzA4YzA3YjVmNjRhZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcyZGJjNjNkY2E0YjQzYTNiYjdhN2Y1MDkyMTE4NmJhLnNldENvbnRlbnQoaHRtbF9iNTllYWJkNjk0NmI0YzY2YjZmMzA4YzA3YjVmNjRhZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2M0OWZlNTRhMjIxYjQ2MWRiMzdjZTBmMDAwN2ZkZDhlLmJpbmRQb3B1cChwb3B1cF83MmRiYzYzZGNhNGI0M2EzYmI3YTdmNTA5MjExODZiYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82Yjk4NzU0MzNkOTM0NjJkODAxZmRlNDkxZWU2MTg4ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4Mzk4MDU1OTI2MzQsLTEyMi40MTE3NzgyOTU5OTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M3YzVhNDcwZDY0YzQ2ZTA5ZDZlMTkyYmZlOTFlYWU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhhN2VlNWFmMGI3ZTRhMjZhODQ3Nzc1MzJhMjVkYjIyID0gJCgnPGRpdiBpZD0iaHRtbF84YTdlZTVhZjBiN2U0YTI2YTg0Nzc3NTMyYTI1ZGIyMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jN2M1YTQ3MGQ2NGM0NmUwOWQ2ZTE5MmJmZTkxZWFlNy5zZXRDb250ZW50KGh0bWxfOGE3ZWU1YWYwYjdlNGEyNmE4NDc3NzUzMmEyNWRiMjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82Yjk4NzU0MzNkOTM0NjJkODAxZmRlNDkxZWU2MTg4ZC5iaW5kUG9wdXAocG9wdXBfYzdjNWE0NzBkNjRjNDZlMDlkNmUxOTJiZmU5MWVhZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzIwZmUxNzllMTlkNDUxNTkyYzU1NjAyMzMzOTRjNTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NkNTU4MGMxOWFjZDQxYzRhNGZlZjMyYzg1Y2ZlNGM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M4MGVmMmQ2ZThjYTQ3MDU4MTlmM2FkYjMxYmE0NzQ1ID0gJCgnPGRpdiBpZD0iaHRtbF9jODBlZjJkNmU4Y2E0NzA1ODE5ZjNhZGIzMWJhNDc0NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NkNTU4MGMxOWFjZDQxYzRhNGZlZjMyYzg1Y2ZlNGM5LnNldENvbnRlbnQoaHRtbF9jODBlZjJkNmU4Y2E0NzA1ODE5ZjNhZGIzMWJhNDc0NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzMyMGZlMTc5ZTE5ZDQ1MTU5MmM1NTYwMjMzMzk0YzUzLmJpbmRQb3B1cChwb3B1cF9jZDU1ODBjMTlhY2Q0MWM0YTRmZWYzMmM4NWNmZTRjOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNGIxOTllN2JhZWE0YjdjOTU0YzVmZTljY2RhYjBhMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM5YTE3NzUyN2MyZDRjODJiZjUwYmM4Mzc5ODExMjg5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RmNTk5YmJkNDEyNzQzYTg4ZDAyNTA1MmJkMjc4MzQyID0gJCgnPGRpdiBpZD0iaHRtbF9kZjU5OWJiZDQxMjc0M2E4OGQwMjUwNTJiZDI3ODM0MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM5YTE3NzUyN2MyZDRjODJiZjUwYmM4Mzc5ODExMjg5LnNldENvbnRlbnQoaHRtbF9kZjU5OWJiZDQxMjc0M2E4OGQwMjUwNTJiZDI3ODM0Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U0YjE5OWU3YmFlYTRiN2M5NTRjNWZlOWNjZGFiMGEwLmJpbmRQb3B1cChwb3B1cF8zOWExNzc1MjdjMmQ0YzgyYmY1MGJjODM3OTgxMTI4OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jNjg4OGQwZjRjYmU0YzIwOTNmOGFmZGJkMWNmZWQ3YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NWZmZjhiZWU3NTM0MTQyYmNjZDI5YmJiODNiZWIxNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ODgxYTM2YjM3ZWQ0MzljOWZlNzhlOTVkYjUzYmYxZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTg4MWEzNmIzN2VkNDM5YzlmZTc4ZTk1ZGI1M2JmMWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg1ZmZmOGJlZTc1MzQxNDJiY2NkMjliYmI4M2JlYjE2LnNldENvbnRlbnQoaHRtbF81ODgxYTM2YjM3ZWQ0MzljOWZlNzhlOTVkYjUzYmYxZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2M2ODg4ZDBmNGNiZTRjMjA5M2Y4YWZkYmQxY2ZlZDdiLmJpbmRQb3B1cChwb3B1cF84NWZmZjhiZWU3NTM0MTQyYmNjZDI5YmJiODNiZWIxNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84N2JlZTYyNjQ0ZjA0OWMwOGE4YjY4MGVhNWE0YTFkMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDI1NWFiMmJkOTI1NGNkZTliNDllNGVmNDZmNzBkMjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjM2NWMwM2Y4YjA4NDlhM2I5ZjljNmRmMzQzNDUzOGEgPSAkKCc8ZGl2IGlkPSJodG1sXzYzNjVjMDNmOGIwODQ5YTNiOWY5YzZkZjM0MzQ1MzhhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQyNTVhYjJiZDkyNTRjZGU5YjQ5ZTRlZjQ2ZjcwZDI4LnNldENvbnRlbnQoaHRtbF82MzY1YzAzZjhiMDg0OWEzYjlmOWM2ZGYzNDM0NTM4YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg3YmVlNjI2NDRmMDQ5YzA4YThiNjgwZWE1YTRhMWQxLmJpbmRQb3B1cChwb3B1cF80MjU1YWIyYmQ5MjU0Y2RlOWI0OWU0ZWY0NmY3MGQyOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85NGEzNDYxNGFiMjY0MDliODc2ZDFhNTM4ZmU3ZTE1MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNzExYmY0ZDMyYjk0Y2UzYjIzM2VkMjBhNzVmODYzOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNjFmYzk1NzRlNzU0NGQzOWY3YTk2MTllNjdkYmRiMSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTYxZmM5NTc0ZTc1NDRkMzlmN2E5NjE5ZTY3ZGJkYjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNzExYmY0ZDMyYjk0Y2UzYjIzM2VkMjBhNzVmODYzOS5zZXRDb250ZW50KGh0bWxfMTYxZmM5NTc0ZTc1NDRkMzlmN2E5NjE5ZTY3ZGJkYjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85NGEzNDYxNGFiMjY0MDliODc2ZDFhNTM4ZmU3ZTE1My5iaW5kUG9wdXAocG9wdXBfZjcxMWJmNGQzMmI5NGNlM2IyMzNlZDIwYTc1Zjg2MzkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTBhNDcyOWRkZWNkNDhkMmE1ZmY3NGU5MDljMjhjZmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ODRmOGNjN2UxYWY0OTkxODUzMDMzNDI1N2FjODk4MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85N2U3YjlhZmI3OGE0OGU3OWU0Mjk0NzhkMjNmNTlhYiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTdlN2I5YWZiNzhhNDhlNzllNDI5NDc4ZDIzZjU5YWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ4NGY4Y2M3ZTFhZjQ5OTE4NTMwMzM0MjU3YWM4OTgxLnNldENvbnRlbnQoaHRtbF85N2U3YjlhZmI3OGE0OGU3OWU0Mjk0NzhkMjNmNTlhYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzUwYTQ3MjlkZGVjZDQ4ZDJhNWZmNzRlOTA5YzI4Y2ZjLmJpbmRQb3B1cChwb3B1cF80ODRmOGNjN2UxYWY0OTkxODUzMDMzNDI1N2FjODk4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81NTRjYzc4Y2U5MmU0ZTRlODExYjE1YjkyMGE2N2FhNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNTQyNTdhZjFjYmE0M2M4YWM0Y2I2ZGRiNDVjNjQ0NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NzcyZmY2NmU5ZGU0OGIwYmY5Zjg3YTBmMGRlNTc3ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTc3MmZmNjZlOWRlNDhiMGJmOWY4N2EwZjBkZTU3N2QiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNTQyNTdhZjFjYmE0M2M4YWM0Y2I2ZGRiNDVjNjQ0Ni5zZXRDb250ZW50KGh0bWxfNTc3MmZmNjZlOWRlNDhiMGJmOWY4N2EwZjBkZTU3N2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NTRjYzc4Y2U5MmU0ZTRlODExYjE1YjkyMGE2N2FhNS5iaW5kUG9wdXAocG9wdXBfMzU0MjU3YWYxY2JhNDNjOGFjNGNiNmRkYjQ1YzY0NDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWRiNTYyYmFiZjViNDc1N2FlYTAyM2M2OWJiYTc0MmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kN2MwOWIzMTg4MTc0YTk3YjY1MTE4ODk4OGVkMTFjZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xOTA3YzZkNzA1MDM0MzAyODlhYTRlMGEzZmRlZWU1NyA9ICQoJzxkaXYgaWQ9Imh0bWxfMTkwN2M2ZDcwNTAzNDMwMjg5YWE0ZTBhM2ZkZWVlNTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNUT0xFTiBQUk9QRVJUWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDdjMDliMzE4ODE3NGE5N2I2NTExODg5ODhlZDExY2Yuc2V0Q29udGVudChodG1sXzE5MDdjNmQ3MDUwMzQzMDI4OWFhNGUwYTNmZGVlZTU3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYWRiNTYyYmFiZjViNDc1N2FlYTAyM2M2OWJiYTc0MmYuYmluZFBvcHVwKHBvcHVwX2Q3YzA5YjMxODgxNzRhOTdiNjUxMTg4OTg4ZWQxMWNmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE2MTFlMmMzODRkMzRjYzZiMmVmMzFhNzE1NGQxYTU2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYThiZjllOGUzZjg0MmE5YTZhMzE0MmUwMTEzYzEzNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MWI2ZWY4MjIzMzU0YzAzOTIyMDRmZTA5ZDcxOGM3OCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTFiNmVmODIyMzM1NGMwMzkyMjA0ZmUwOWQ3MThjNzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JhOGJmOWU4ZTNmODQyYTlhNmEzMTQyZTAxMTNjMTM3LnNldENvbnRlbnQoaHRtbF85MWI2ZWY4MjIzMzU0YzAzOTIyMDRmZTA5ZDcxOGM3OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE2MTFlMmMzODRkMzRjYzZiMmVmMzFhNzE1NGQxYTU2LmJpbmRQb3B1cChwb3B1cF9iYThiZjllOGUzZjg0MmE5YTZhMzE0MmUwMTEzYzEzNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNTlhZDg2ZWFlNTk0OTYxODZjZDdiMmRmNTZlNmUxNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTE2MzM4YTg1ODlhNDI1MmI2NWE3Yzg4OGZlNjMxNDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmYzYWY3YWNhNmFhNDEzNTllYzRjNDQ3OTdmYzdkNDYgPSAkKCc8ZGl2IGlkPSJodG1sX2JmM2FmN2FjYTZhYTQxMzU5ZWM0YzQ0Nzk3ZmM3ZDQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMTYzMzhhODU4OWE0MjUyYjY1YTdjODg4ZmU2MzE0NC5zZXRDb250ZW50KGh0bWxfYmYzYWY3YWNhNmFhNDEzNTllYzRjNDQ3OTdmYzdkNDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNTlhZDg2ZWFlNTk0OTYxODZjZDdiMmRmNTZlNmUxNS5iaW5kUG9wdXAocG9wdXBfYTE2MzM4YTg1ODlhNDI1MmI2NWE3Yzg4OGZlNjMxNDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWU0N2ZhOGE0NWI5NGE1Y2IzMzRjYTM1OTMxMTI5ZWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgyNjJhN2E2YjZiNDRlNzQ5YjE3MGE0OTAyMDQ0MDRjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA5ZjBlYjUyMTk1ZTQwODZiZWE0N2ExOGIzMmVhYzhlID0gJCgnPGRpdiBpZD0iaHRtbF8wOWYwZWI1MjE5NWU0MDg2YmVhNDdhMThiMzJlYWM4ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODI2MmE3YTZiNmI0NGU3NDliMTcwYTQ5MDIwNDQwNGMuc2V0Q29udGVudChodG1sXzA5ZjBlYjUyMTk1ZTQwODZiZWE0N2ExOGIzMmVhYzhlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWU0N2ZhOGE0NWI5NGE1Y2IzMzRjYTM1OTMxMTI5ZWMuYmluZFBvcHVwKHBvcHVwXzgyNjJhN2E2YjZiNDRlNzQ5YjE3MGE0OTAyMDQ0MDRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgwYzJhMTJkZGM2ODQwZTQ5OTdkYWJmZTY5MzJlZjE3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDJhYTRhYzVjNjQ5NGY2NzllNzFmMGI1YzcyNDc3ZWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmI4ODY2NTg2ZDhhNDNlYmExOTI5ODEyNmY3M2JiMjIgPSAkKCc8ZGl2IGlkPSJodG1sXzZiODg2NjU4NmQ4YTQzZWJhMTkyOTgxMjZmNzNiYjIyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMmFhNGFjNWM2NDk0ZjY3OWU3MWYwYjVjNzI0NzdlZS5zZXRDb250ZW50KGh0bWxfNmI4ODY2NTg2ZDhhNDNlYmExOTI5ODEyNmY3M2JiMjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84MGMyYTEyZGRjNjg0MGU0OTk3ZGFiZmU2OTMyZWYxNy5iaW5kUG9wdXAocG9wdXBfZDJhYTRhYzVjNjQ5NGY2NzllNzFmMGI1YzcyNDc3ZWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDg3ZTgwNzY4MzA5NGI5MThjMjNiNDk0MjVjYzIwYTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMxNDEzZGQ4YmZkYzQ0NWVhNGQ0Y2IzOGYxZmJkM2RhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNmOGFiMTEwMTE4NDQ3ZTViOGYwNjY0MTQ2ZGZiODg4ID0gJCgnPGRpdiBpZD0iaHRtbF8zZjhhYjExMDExODQ0N2U1YjhmMDY2NDE0NmRmYjg4OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMxNDEzZGQ4YmZkYzQ0NWVhNGQ0Y2IzOGYxZmJkM2RhLnNldENvbnRlbnQoaHRtbF8zZjhhYjExMDExODQ0N2U1YjhmMDY2NDE0NmRmYjg4OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA4N2U4MDc2ODMwOTRiOTE4YzIzYjQ5NDI1Y2MyMGEzLmJpbmRQb3B1cChwb3B1cF8zMTQxM2RkOGJmZGM0NDVlYTRkNGNiMzhmMWZiZDNkYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hYmI5ZjlhZmY0ZGM0ODhiYjMwNThlYzRlYmMwOTAxNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84OTFiYmQ2ZWNiZWE0OTdmOTc5MTUzNzVmZGEyZjBlNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNjI2YTU5ODRjY2Y0YjM4Yjc4YmMxMjdmZjhhZGM2MiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzYyNmE1OTg0Y2NmNGIzOGI3OGJjMTI3ZmY4YWRjNjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84OTFiYmQ2ZWNiZWE0OTdmOTc5MTUzNzVmZGEyZjBlNy5zZXRDb250ZW50KGh0bWxfMzYyNmE1OTg0Y2NmNGIzOGI3OGJjMTI3ZmY4YWRjNjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hYmI5ZjlhZmY0ZGM0ODhiYjMwNThlYzRlYmMwOTAxNS5iaW5kUG9wdXAocG9wdXBfODkxYmJkNmVjYmVhNDk3Zjk3OTE1Mzc1ZmRhMmYwZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzdmYjk1ZWIxZGMyNDFkYjhmYzJiMWE0YzJkOGQ3ODEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmY2ODk4MjM4MGIwNGVmNDk0ZTJhODZiNjU5MjA5ZjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2VhNmNmNDFlNDQwNDZlNGFkNWQ2MGM0MmIxODI4NmQgPSAkKCc8ZGl2IGlkPSJodG1sXzNlYTZjZjQxZTQ0MDQ2ZTRhZDVkNjBjNDJiMTgyODZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZjY4OTgyMzgwYjA0ZWY0OTRlMmE4NmI2NTkyMDlmNi5zZXRDb250ZW50KGh0bWxfM2VhNmNmNDFlNDQwNDZlNGFkNWQ2MGM0MmIxODI4NmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jN2ZiOTVlYjFkYzI0MWRiOGZjMmIxYTRjMmQ4ZDc4MS5iaW5kUG9wdXAocG9wdXBfYmY2ODk4MjM4MGIwNGVmNDk0ZTJhODZiNjU5MjA5ZjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTYzOWRjNDhhM2U3NDljNjg2MDMyY2MxYzg4NDU5MDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTRjMmQ3YTllNjA2NGVjZGIyMDgxZDdjZjI3NjA4MGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTNlNzY4NjZjMDIzNDJkZTgwZjI0M2IxYTY1ZTAyMGUgPSAkKCc8ZGl2IGlkPSJodG1sXzUzZTc2ODY2YzAyMzQyZGU4MGYyNDNiMWE2NWUwMjBlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTRjMmQ3YTllNjA2NGVjZGIyMDgxZDdjZjI3NjA4MGUuc2V0Q29udGVudChodG1sXzUzZTc2ODY2YzAyMzQyZGU4MGYyNDNiMWE2NWUwMjBlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTYzOWRjNDhhM2U3NDljNjg2MDMyY2MxYzg4NDU5MDcuYmluZFBvcHVwKHBvcHVwXzU0YzJkN2E5ZTYwNjRlY2RiMjA4MWQ3Y2YyNzYwODBlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkwMGZhMzRlMmI3OTQzN2NiMTAwODBmZGU5NDM4NjQ3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85YmMxZThlZWRjOTc0NDdiOWU1NWExYzljMmMwMGQ3YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jOTdjNDdlNGY0MGM0OGUxYTZkNDc0OTIxMTVjMWFjZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYzk3YzQ3ZTRmNDBjNDhlMWE2ZDQ3NDkyMTE1YzFhY2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzliYzFlOGVlZGM5NzQ0N2I5ZTU1YTFjOWMyYzAwZDdhLnNldENvbnRlbnQoaHRtbF9jOTdjNDdlNGY0MGM0OGUxYTZkNDc0OTIxMTVjMWFjZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzkwMGZhMzRlMmI3OTQzN2NiMTAwODBmZGU5NDM4NjQ3LmJpbmRQb3B1cChwb3B1cF85YmMxZThlZWRjOTc0NDdiOWU1NWExYzljMmMwMGQ3YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jYWNjZTVlODlmZTE0OWMyOTViMzdmNDQyYjRkOTRhNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZjYyYzk3Y2NkOTI0NzhkODBmMDA5ZmE2MjczZGZjNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZTc2Zjc1MGNkYzc0OWMzYmYyNTRjYWU5ZDFiNzI3YSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWU3NmY3NTBjZGM3NDljM2JmMjU0Y2FlOWQxYjcyN2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wZjYyYzk3Y2NkOTI0NzhkODBmMDA5ZmE2MjczZGZjNy5zZXRDb250ZW50KGh0bWxfOWU3NmY3NTBjZGM3NDljM2JmMjU0Y2FlOWQxYjcyN2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jYWNjZTVlODlmZTE0OWMyOTViMzdmNDQyYjRkOTRhNC5iaW5kUG9wdXAocG9wdXBfMGY2MmM5N2NjZDkyNDc4ZDgwZjAwOWZhNjI3M2RmYzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzhhZDNkYzZkOWU1NGU5Njg3YWMxMjUwMjlhNGYyNTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNDM2YjY2NThhNjk0ODNmOWRkZmUzNGYxOTk3MTk0NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZTA4MTBiOTZkMmY0ZjE5OTcwMWFmOTdiZmI5YjgzZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYmUwODEwYjk2ZDJmNGYxOTk3MDFhZjk3YmZiOWI4M2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNDM2YjY2NThhNjk0ODNmOWRkZmUzNGYxOTk3MTk0NS5zZXRDb250ZW50KGh0bWxfYmUwODEwYjk2ZDJmNGYxOTk3MDFhZjk3YmZiOWI4M2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jOGFkM2RjNmQ5ZTU0ZTk2ODdhYzEyNTAyOWE0ZjI1OC5iaW5kUG9wdXAocG9wdXBfZjQzNmI2NjU4YTY5NDgzZjlkZGZlMzRmMTk5NzE5NDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWFiOWYxOWU1OWY1NDZhNTkxYzBlNzA4ZTk5MmJkNDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85YTJhMjNlZThiMjE0OTFlYjAyNzdiNDFjNDY2NDNhMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iM2VmZjJjOGRiNDM0NTQzOWU1ODVjYjY3Y2ZiYTc5MCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjNlZmYyYzhkYjQzNDU0MzllNTg1Y2I2N2NmYmE3OTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YTJhMjNlZThiMjE0OTFlYjAyNzdiNDFjNDY2NDNhMi5zZXRDb250ZW50KGh0bWxfYjNlZmYyYzhkYjQzNDU0MzllNTg1Y2I2N2NmYmE3OTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xYWI5ZjE5ZTU5ZjU0NmE1OTFjMGU3MDhlOTkyYmQ0NS5iaW5kUG9wdXAocG9wdXBfOWEyYTIzZWU4YjIxNDkxZWIwMjc3YjQxYzQ2NjQzYTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGY4MjMwYjkwOWY1NDdlN2I2N2EzNzYyM2MxYjUzNDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzAyNWQ3MWI3NWU3ZDQyZGJhNTM2ZDhhZTI5ZmRkM2FlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1ZWQ5NzZiZWJlODRhY2I5MGEwODBmNDQ1NDk0NWE4ID0gJCgnPGRpdiBpZD0iaHRtbF83NWVkOTc2YmViZTg0YWNiOTBhMDgwZjQ0NTQ5NDVhOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAyNWQ3MWI3NWU3ZDQyZGJhNTM2ZDhhZTI5ZmRkM2FlLnNldENvbnRlbnQoaHRtbF83NWVkOTc2YmViZTg0YWNiOTBhMDgwZjQ0NTQ5NDVhOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBmODIzMGI5MDlmNTQ3ZTdiNjdhMzc2MjNjMWI1MzQ5LmJpbmRQb3B1cChwb3B1cF8wMjVkNzFiNzVlN2Q0MmRiYTUzNmQ4YWUyOWZkZDNhZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kOTk1NWY1ZTNmMmM0NDc1ODA4ZGUzMmQ1OWM0Y2ZkZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U0ODVkZWIwYmZhYTRmYjViYjhkODY0NzEwY2Q1ODViID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJjODlkZDg4NjY2MjQyODI5YzM4YWQxYWE4NmU4YTllID0gJCgnPGRpdiBpZD0iaHRtbF8yYzg5ZGQ4ODY2NjI0MjgyOWMzOGFkMWFhODZlOGE5ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNDg1ZGViMGJmYWE0ZmI1YmI4ZDg2NDcxMGNkNTg1Yi5zZXRDb250ZW50KGh0bWxfMmM4OWRkODg2NjYyNDI4MjljMzhhZDFhYTg2ZThhOWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kOTk1NWY1ZTNmMmM0NDc1ODA4ZGUzMmQ1OWM0Y2ZkZS5iaW5kUG9wdXAocG9wdXBfZTQ4NWRlYjBiZmFhNGZiNWJiOGQ4NjQ3MTBjZDU4NWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjIyNTBkOTA0N2M5NGMxZTg3MDFmMTE5ZGY2OWQ1YjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M4ZDE5NWY1NjcxYjQwY2M4ZjkxMDk4NzZkOTRmMDZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JlMjM3ZTJiNDBjZjRjZDE5NzVmY2VhNTNiNmM2NmVlID0gJCgnPGRpdiBpZD0iaHRtbF9iZTIzN2UyYjQwY2Y0Y2QxOTc1ZmNlYTUzYjZjNjZlZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkVISUNMRSBUSEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzhkMTk1ZjU2NzFiNDBjYzhmOTEwOTg3NmQ5NGYwNmUuc2V0Q29udGVudChodG1sX2JlMjM3ZTJiNDBjZjRjZDE5NzVmY2VhNTNiNmM2NmVlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjIyNTBkOTA0N2M5NGMxZTg3MDFmMTE5ZGY2OWQ1YjQuYmluZFBvcHVwKHBvcHVwX2M4ZDE5NWY1NjcxYjQwY2M4ZjkxMDk4NzZkOTRmMDZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFiMmI1MTFhOWJkZjQ0OGM5Nzc2NjFjNWQ1Y2E0MTBiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWZlYjk5Njg3NDM3NDhjZTgxNTk2MzgzYWYxMjQxYmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzA3OTk5MGU2ZjYyNGU2ZTgxYTBmODg2ZTNmNTFkY2IgPSAkKCc8ZGl2IGlkPSJodG1sXzcwNzk5OTBlNmY2MjRlNmU4MWEwZjg4NmUzZjUxZGNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZmViOTk2ODc0Mzc0OGNlODE1OTYzODNhZjEyNDFiZS5zZXRDb250ZW50KGh0bWxfNzA3OTk5MGU2ZjYyNGU2ZTgxYTBmODg2ZTNmNTFkY2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xYjJiNTExYTliZGY0NDhjOTc3NjYxYzVkNWNhNDEwYi5iaW5kUG9wdXAocG9wdXBfMWZlYjk5Njg3NDM3NDhjZTgxNTk2MzgzYWYxMjQxYmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWYwOTYzOGQ1MDIxNGVjZGFlOTliNzkyMGM3NzQwNmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82Y2VlNGQ3NDQyNjM0ZTY2YTRiOGYzZGM5ZTVkYTA1MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MzhhMjljZjY1N2M0NTQwOTEzODUzMjU4N2U5M2YxNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTM4YTI5Y2Y2NTdjNDU0MDkxMzg1MzI1ODdlOTNmMTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZjZWU0ZDc0NDI2MzRlNjZhNGI4ZjNkYzllNWRhMDUwLnNldENvbnRlbnQoaHRtbF81MzhhMjljZjY1N2M0NTQwOTEzODUzMjU4N2U5M2YxNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFmMDk2MzhkNTAyMTRlY2RhZTk5Yjc5MjBjNzc0MDZlLmJpbmRQb3B1cChwb3B1cF82Y2VlNGQ3NDQyNjM0ZTY2YTRiOGYzZGM5ZTVkYTA1MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82YjI4ZjhjYmM2ZjE0NTMzOTI3NzhlYTZkYTliNGYyZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NiNjM0M2IzMTJiZDRmM2Q4M2YwY2RkOWI1OTM1Y2IzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YyZGU5ZWIyN2JjZDQ0ZjY4ZTg5NDFlYmMyNjkzODZjID0gJCgnPGRpdiBpZD0iaHRtbF9mMmRlOWViMjdiY2Q0NGY2OGU4OTQxZWJjMjY5Mzg2YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2I2MzQzYjMxMmJkNGYzZDgzZjBjZGQ5YjU5MzVjYjMuc2V0Q29udGVudChodG1sX2YyZGU5ZWIyN2JjZDQ0ZjY4ZTg5NDFlYmMyNjkzODZjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNmIyOGY4Y2JjNmYxNDUzMzkyNzc4ZWE2ZGE5YjRmMmYuYmluZFBvcHVwKHBvcHVwX2NiNjM0M2IzMTJiZDRmM2Q4M2YwY2RkOWI1OTM1Y2IzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgxMGFiNzFmOGUwMDQwN2M4NjQzMjU3ZmQyZWVlY2UwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZmM0MzdiZmVkODQ0ZjUyYmI2OTc4YzA5OTMyZTA2ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNGI0YjE0YjY5OTk0YzdjOTZjM2I1OWQxZjU2MjAxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTRiNGIxNGI2OTk5NGM3Yzk2YzNiNTlkMWY1NjIwMWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZmM0MzdiZmVkODQ0ZjUyYmI2OTc4YzA5OTMyZTA2ZS5zZXRDb250ZW50KGh0bWxfYTRiNGIxNGI2OTk5NGM3Yzk2YzNiNTlkMWY1NjIwMWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84MTBhYjcxZjhlMDA0MDdjODY0MzI1N2ZkMmVlZWNlMC5iaW5kUG9wdXAocG9wdXBfYWZjNDM3YmZlZDg0NGY1MmJiNjk3OGMwOTkzMmUwNmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmFhMDRjZjExYjAwNDFhNThiZDU2ZDcyNzc5YzdlY2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdlNzQ5NGZlZjc4YTQ0YTRiM2NmMDRhY2E5MWQxNjliID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M5MGVmOWNkNWY4ZjQ1MTJiMDgwY2JiOGEwZWRkOGIxID0gJCgnPGRpdiBpZD0iaHRtbF9jOTBlZjljZDVmOGY0NTEyYjA4MGNiYjhhMGVkZDhiMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlNzQ5NGZlZjc4YTQ0YTRiM2NmMDRhY2E5MWQxNjliLnNldENvbnRlbnQoaHRtbF9jOTBlZjljZDVmOGY0NTEyYjA4MGNiYjhhMGVkZDhiMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JhYTA0Y2YxMWIwMDQxYTU4YmQ1NmQ3Mjc3OWM3ZWNkLmJpbmRQb3B1cChwb3B1cF83ZTc0OTRmZWY3OGE0NGE0YjNjZjA0YWNhOTFkMTY5Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84MGY1ZmQ1MTA0ZTA0MWY5OTY5NjZkNjE0NWZmZWJkOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTM2NjY4NzYwOWNlNGNhYzg3NTI1MWU5MmViZTgyZTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTBiYmIwMTRmNWNhNGIxN2FmZmFkODVlZjI4OWQ1MzIgPSAkKCc8ZGl2IGlkPSJodG1sX2EwYmJiMDE0ZjVjYTRiMTdhZmZhZDg1ZWYyODlkNTMyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzEzNjY2ODc2MDljZTRjYWM4NzUyNTFlOTJlYmU4MmU5LnNldENvbnRlbnQoaHRtbF9hMGJiYjAxNGY1Y2E0YjE3YWZmYWQ4NWVmMjg5ZDUzMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzgwZjVmZDUxMDRlMDQxZjk5Njk2NmQ2MTQ1ZmZlYmQ5LmJpbmRQb3B1cChwb3B1cF8xMzY2Njg3NjA5Y2U0Y2FjODc1MjUxZTkyZWJlODJlOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYjk4OTY3NjFmMDQ0OTQ4YjE1MmY4N2EyNzJhNjhjNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQ2OTI4MjAwNDEsLTEyMi40MTU3NTcwMzkxOTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M0ODI0MzVjNDBiZDQxM2Y4NmJlYjdjNGY4NWRhNGQwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5ZjI3NDJkZDE1MTRlZGY5MjdlOWJmZTFjZWExOThiID0gJCgnPGRpdiBpZD0iaHRtbF8xOWYyNzQyZGQxNTE0ZWRmOTI3ZTliZmUxY2VhMTk4YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNDgyNDM1YzQwYmQ0MTNmODZiZWI3YzRmODVkYTRkMC5zZXRDb250ZW50KGh0bWxfMTlmMjc0MmRkMTUxNGVkZjkyN2U5YmZlMWNlYTE5OGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mYjk4OTY3NjFmMDQ0OTQ4YjE1MmY4N2EyNzJhNjhjNS5iaW5kUG9wdXAocG9wdXBfYzQ4MjQzNWM0MGJkNDEzZjg2YmViN2M0Zjg1ZGE0ZDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDk3NzE3MWY4MDhkNDYxMThmYzU1YjUxMzBjNjc0NDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E0OGY1NTQ2OWRkNTRjYjM4NjdiYTk3NGUxMmY2ZGIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM5ZGNiYmNlNjBhMzRmOWM5YzE2N2FlZDQ5ODMxNzc1ID0gJCgnPGRpdiBpZD0iaHRtbF8zOWRjYmJjZTYwYTM0ZjljOWMxNjdhZWQ0OTgzMTc3NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Uk9CQkVSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTQ4ZjU1NDY5ZGQ1NGNiMzg2N2JhOTc0ZTEyZjZkYjIuc2V0Q29udGVudChodG1sXzM5ZGNiYmNlNjBhMzRmOWM5YzE2N2FlZDQ5ODMxNzc1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDk3NzE3MWY4MDhkNDYxMThmYzU1YjUxMzBjNjc0NDIuYmluZFBvcHVwKHBvcHVwX2E0OGY1NTQ2OWRkNTRjYjM4NjdiYTk3NGUxMmY2ZGIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2EyN2RjZjFjYmM1YjRiZTNiMjRmYzY0OWU1YzBhZThiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZDdkNjdhYTk4MWE0MTI3ODliOTI0NDM0NmU0MzgxOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZDM5OTI2ZTBkOWU0NWU5YjhkODcwMDNmNjA1YTRkZSA9ICQoJzxkaXYgaWQ9Imh0bWxfZmQzOTkyNmUwZDllNDVlOWI4ZDg3MDAzZjYwNWE0ZGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZDdkNjdhYTk4MWE0MTI3ODliOTI0NDM0NmU0MzgxOC5zZXRDb250ZW50KGh0bWxfZmQzOTkyNmUwZDllNDVlOWI4ZDg3MDAzZjYwNWE0ZGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hMjdkY2YxY2JjNWI0YmUzYjI0ZmM2NDllNWMwYWU4Yi5iaW5kUG9wdXAocG9wdXBfZmQ3ZDY3YWE5ODFhNDEyNzg5YjkyNDQzNDZlNDM4MTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzQ3MDJhMjAwZDZjNDczMDhhYTljY2EwZDVhOGQ3NzggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIxMTk4NDg4OTMxLC0xMjIuNDE1NjY5NjYxNDQzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NGNkMTUyMWU5YjA0ODI5OWYxZTk2MjQyNTIzODAyOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZjA2MWM1MTMyODg0MTAwYTM5OGJkOTRlYWNmN2I5OCA9ICQoJzxkaXYgaWQ9Imh0bWxfZWYwNjFjNTEzMjg4NDEwMGEzOThiZDk0ZWFjZjdiOTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzRjZDE1MjFlOWIwNDgyOTlmMWU5NjI0MjUyMzgwMjkuc2V0Q29udGVudChodG1sX2VmMDYxYzUxMzI4ODQxMDBhMzk4YmQ5NGVhY2Y3Yjk4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzQ3MDJhMjAwZDZjNDczMDhhYTljY2EwZDVhOGQ3NzguYmluZFBvcHVwKHBvcHVwXzc0Y2QxNTIxZTliMDQ4Mjk5ZjFlOTYyNDI1MjM4MDI5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzg5ZjBhZmEyZDFmNjRmZGQ5NDIzNTcxN2NjZjY2YzE4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDRjM2I0NTdiMzhhNDY5OWFjOWNjMTdmOTcxNGNkZTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGZhNDQyYjQ2NTlmNDJiMjg1MjA2YTdmNDVkYWU1YzAgPSAkKCc8ZGl2IGlkPSJodG1sXzRmYTQ0MmI0NjU5ZjQyYjI4NTIwNmE3ZjQ1ZGFlNWMwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNGMzYjQ1N2IzOGE0Njk5YWM5Y2MxN2Y5NzE0Y2RlOS5zZXRDb250ZW50KGh0bWxfNGZhNDQyYjQ2NTlmNDJiMjg1MjA2YTdmNDVkYWU1YzApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84OWYwYWZhMmQxZjY0ZmRkOTQyMzU3MTdjY2Y2NmMxOC5iaW5kUG9wdXAocG9wdXBfZDRjM2I0NTdiMzhhNDY5OWFjOWNjMTdmOTcxNGNkZTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWRkZjc5ZTM3NjU0NDExMGFkZWJlNTI1MjRiZTllZTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kODYwOWIzZjhkMGQ0MDVmYjAwYzNmYWFlNjc2MzZlNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hM2RhMzI1MTUwOTg0ZTA3ODBlZmFkMDBjY2Y4OTQxNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYTNkYTMyNTE1MDk4NGUwNzgwZWZhZDAwY2NmODk0MTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q4NjA5YjNmOGQwZDQwNWZiMDBjM2ZhYWU2NzYzNmU3LnNldENvbnRlbnQoaHRtbF9hM2RhMzI1MTUwOTg0ZTA3ODBlZmFkMDBjY2Y4OTQxNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzlkZGY3OWUzNzY1NDQxMTBhZGViZTUyNTI0YmU5ZWUyLmJpbmRQb3B1cChwb3B1cF9kODYwOWIzZjhkMGQ0MDVmYjAwYzNmYWFlNjc2MzZlNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81ZDEyNzYxMWYzMDA0NmMyODU3OGE5N2UyZjI1ZjQ2NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NTM1NDc3ZWRlOTc0MTcxODQzYjEzMDQwNTQ4OWY0MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kNDVjMmE5NTYxNzQ0NTM1OTRmZDQ0MDk5NDczYTIzNyA9ICQoJzxkaXYgaWQ9Imh0bWxfZDQ1YzJhOTU2MTc0NDUzNTk0ZmQ0NDA5OTQ3M2EyMzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzUzNTQ3N2VkZTk3NDE3MTg0M2IxMzA0MDU0ODlmNDIuc2V0Q29udGVudChodG1sX2Q0NWMyYTk1NjE3NDQ1MzU5NGZkNDQwOTk0NzNhMjM3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNWQxMjc2MTFmMzAwNDZjMjg1NzhhOTdlMmYyNWY0NjQuYmluZFBvcHVwKHBvcHVwXzc1MzU0NzdlZGU5NzQxNzE4NDNiMTMwNDA1NDg5ZjQyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y1ODVlMGRkNDE4YzQzMzJiODAxMTZmZWIxZDA3NTE4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZjY5ZDAzZGVhNTc0ZTU5OWE1ZWY3MjgxMTZlODUyZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNTAwZWE5MmFhMWY0NjM0ODczNGY3YWJmMDU3NTBmZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTUwMGVhOTJhYTFmNDYzNDg3MzRmN2FiZjA1NzUwZmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZjY5ZDAzZGVhNTc0ZTU5OWE1ZWY3MjgxMTZlODUyZS5zZXRDb250ZW50KGh0bWxfYTUwMGVhOTJhYTFmNDYzNDg3MzRmN2FiZjA1NzUwZmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNTg1ZTBkZDQxOGM0MzMyYjgwMTE2ZmViMWQwNzUxOC5iaW5kUG9wdXAocG9wdXBfZGY2OWQwM2RlYTU3NGU1OTlhNWVmNzI4MTE2ZTg1MmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmQxYzI4NmNmMTJlNGUxMGE4MGY2ZjA4NmY4ZjAxNTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q5M2Y1YTRjYTYzZTRjYTc5OGI2YTg5YmJkZjY1ODQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA5YmFlYTlmOTEyNDQ1N2E5OWZhZDQwNzg2YTVhODhiID0gJCgnPGRpdiBpZD0iaHRtbF8wOWJhZWE5ZjkxMjQ0NTdhOTlmYWQ0MDc4NmE1YTg4YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q5M2Y1YTRjYTYzZTRjYTc5OGI2YTg5YmJkZjY1ODQ1LnNldENvbnRlbnQoaHRtbF8wOWJhZWE5ZjkxMjQ0NTdhOTlmYWQ0MDc4NmE1YTg4Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZkMWMyODZjZjEyZTRlMTBhODBmNmYwODZmOGYwMTUxLmJpbmRQb3B1cChwb3B1cF9kOTNmNWE0Y2E2M2U0Y2E3OThiNmE4OWJiZGY2NTg0NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81ZTliODYwZTIwMWY0OGI4YTY1OGJmY2IyZTgzMzhkOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIxOTEyNzFhMzA4NzRiOWJiMzQyZDkzOGQ4MmRjZGVmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZmN2NhOTdlN2M4NDQ4MDE4NDUxZDVjY2ZkYjRkMzc0ID0gJCgnPGRpdiBpZD0iaHRtbF82ZjdjYTk3ZTdjODQ0ODAxODQ1MWQ1Y2NmZGI0ZDM3NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIxOTEyNzFhMzA4NzRiOWJiMzQyZDkzOGQ4MmRjZGVmLnNldENvbnRlbnQoaHRtbF82ZjdjYTk3ZTdjODQ0ODAxODQ1MWQ1Y2NmZGI0ZDM3NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzVlOWI4NjBlMjAxZjQ4YjhhNjU4YmZjYjJlODMzOGQ5LmJpbmRQb3B1cChwb3B1cF8yMTkxMjcxYTMwODc0YjliYjM0MmQ5MzhkODJkY2RlZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMGJmOWQ5M2VhNzI0MjQyOGM2ODdmNzM5MTE4Mjc0OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdkZjJkM2UxNWI5MzQyYzE5OTFmY2E4ZTY1ZmUyNWQ3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZhMTQxNDM0MDAxMzQ3ZGRiOWRkYmZiODEzYjYyYjk0ID0gJCgnPGRpdiBpZD0iaHRtbF82YTE0MTQzNDAwMTM0N2RkYjlkZGJmYjgxM2I2MmI5NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2RmMmQzZTE1YjkzNDJjMTk5MWZjYThlNjVmZTI1ZDcuc2V0Q29udGVudChodG1sXzZhMTQxNDM0MDAxMzQ3ZGRiOWRkYmZiODEzYjYyYjk0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzBiZjlkOTNlYTcyNDI0MjhjNjg3ZjczOTExODI3NDguYmluZFBvcHVwKHBvcHVwXzdkZjJkM2UxNWI5MzQyYzE5OTFmY2E4ZTY1ZmUyNWQ3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU5NjY4MTA3YzhkMTQ3ZTQ4ZTY5M2UwZmQyMDEzY2EzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjVhMDExZTA5YWJhNGM1OGJiYmEzOTZmYjgwYjhmNjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjQwOGMzNmJjM2JjNGE0ZGE3NTUxNjc3YjJkMzZjNjQgPSAkKCc8ZGl2IGlkPSJodG1sX2I0MDhjMzZiYzNiYzRhNGRhNzU1MTY3N2IyZDM2YzY0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjVhMDExZTA5YWJhNGM1OGJiYmEzOTZmYjgwYjhmNjUuc2V0Q29udGVudChodG1sX2I0MDhjMzZiYzNiYzRhNGRhNzU1MTY3N2IyZDM2YzY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTk2NjgxMDdjOGQxNDdlNDhlNjkzZTBmZDIwMTNjYTMuYmluZFBvcHVwKHBvcHVwX2I1YTAxMWUwOWFiYTRjNThiYmJhMzk2ZmI4MGI4ZjY1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZjZmQ1YTY0OThjNDRkN2JiOTljMmM3ZjYxOGQ5NzMxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTY5Y2E3YWM4MThjNDhmYzk3OTc3YWJiMWM2MGUzNGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWM2OTc3MDdjMDIwNGYwMTk4YzE3ODNkOGZlYzIxMWMgPSAkKCc8ZGl2IGlkPSJodG1sXzVjNjk3NzA3YzAyMDRmMDE5OGMxNzgzZDhmZWMyMTFjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTY5Y2E3YWM4MThjNDhmYzk3OTc3YWJiMWM2MGUzNGEuc2V0Q29udGVudChodG1sXzVjNjk3NzA3YzAyMDRmMDE5OGMxNzgzZDhmZWMyMTFjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmNmZDVhNjQ5OGM0NGQ3YmI5OWMyYzdmNjE4ZDk3MzEuYmluZFBvcHVwKHBvcHVwX2U2OWNhN2FjODE4YzQ4ZmM5Nzk3N2FiYjFjNjBlMzRhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q4MTZlOTYwYzE2MjRmNTRhNjViMzQ2NmI2NDg4ZDZmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNzZiZjlmNzkyMjg0MWZmYjc4ZTBlNmJlZWQ3OWRhYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZDRhYzJkYmY0NDc0NGU0YWU4MWQyZmFhZDE4YzY1MCA9ICQoJzxkaXYgaWQ9Imh0bWxfMWQ0YWMyZGJmNDQ3NDRlNGFlODFkMmZhYWQxOGM2NTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U3NmJmOWY3OTIyODQxZmZiNzhlMGU2YmVlZDc5ZGFhLnNldENvbnRlbnQoaHRtbF8xZDRhYzJkYmY0NDc0NGU0YWU4MWQyZmFhZDE4YzY1MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q4MTZlOTYwYzE2MjRmNTRhNjViMzQ2NmI2NDg4ZDZmLmJpbmRQb3B1cChwb3B1cF9lNzZiZjlmNzkyMjg0MWZmYjc4ZTBlNmJlZWQ3OWRhYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NDdiM2E2OThhOTg0YWFmYTFmMThlM2M4OWI5NzMyYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTE4NGQyMmMxM2IzNDE5ZGIyNzEwYjg5MDc2N2ZmMjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODg0YzQ5OGY2NGQ0NGM2ZGFjZDBiZmJlYzJiZmQ3OWMgPSAkKCc8ZGl2IGlkPSJodG1sXzg4NGM0OThmNjRkNDRjNmRhY2QwYmZiZWMyYmZkNzljIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTE4NGQyMmMxM2IzNDE5ZGIyNzEwYjg5MDc2N2ZmMjIuc2V0Q29udGVudChodG1sXzg4NGM0OThmNjRkNDRjNmRhY2QwYmZiZWMyYmZkNzljKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjQ3YjNhNjk4YTk4NGFhZmExZjE4ZTNjODliOTczMmMuYmluZFBvcHVwKHBvcHVwXzUxODRkMjJjMTNiMzQxOWRiMjcxMGI4OTA3NjdmZjIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ2MjdhZmJlY2EzMDRiOGJiMzk1MDVhZmFlMWYyYTI5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3NTExODg5NTY5NSwtMTIyLjQxODA0NTQ1Mjc2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmRiNjIzODJlZmExNGE2YmFiMWUzNDMxZTgyYWU1YTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmI5Mjk0N2QyZjYxNDA3ZmE4NGI3OThmMDEyODQ3MTQgPSAkKCc8ZGl2IGlkPSJodG1sX2JiOTI5NDdkMmY2MTQwN2ZhODRiNzk4ZjAxMjg0NzE0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZGI2MjM4MmVmYTE0YTZiYWIxZTM0MzFlODJhZTVhMC5zZXRDb250ZW50KGh0bWxfYmI5Mjk0N2QyZjYxNDA3ZmE4NGI3OThmMDEyODQ3MTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80NjI3YWZiZWNhMzA0YjhiYjM5NTA1YWZhZTFmMmEyOS5iaW5kUG9wdXAocG9wdXBfZmRiNjIzODJlZmExNGE2YmFiMWUzNDMxZTgyYWU1YTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzQ4NmUyNDQ4MTU0NDhlZTg0NzY0M2M1Yzg1NmJmMWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kOGZjZjE1YThmZmU0ZjQyYWEzOTRiYzUwYTkxY2ZjNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82Y2E5YzQ5MWI0NTc0MGI5YThkODM3OWFmMzNmOTkxNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmNhOWM0OTFiNDU3NDBiOWE4ZDgzNzlhZjMzZjk5MTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOGZjZjE1YThmZmU0ZjQyYWEzOTRiYzUwYTkxY2ZjNi5zZXRDb250ZW50KGh0bWxfNmNhOWM0OTFiNDU3NDBiOWE4ZDgzNzlhZjMzZjk5MTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zNDg2ZTI0NDgxNTQ0OGVlODQ3NjQzYzVjODU2YmYxYy5iaW5kUG9wdXAocG9wdXBfZDhmY2YxNWE4ZmZlNGY0MmFhMzk0YmM1MGE5MWNmYzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzRlYjFlYzhkMjgyNGIyODhjZGMwNzY5OWJiZjdjZGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5ZThmZTJjN2I5MDQyNDJiYmJkYTM4YWFmZGQ4ZmE4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U4YTVlYjhlZDg2NTQzZmM5N2YxZjQ0OWExMDEyNzk2ID0gJCgnPGRpdiBpZD0iaHRtbF9lOGE1ZWI4ZWQ4NjU0M2ZjOTdmMWY0NDlhMTAxMjc5NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg5ZThmZTJjN2I5MDQyNDJiYmJkYTM4YWFmZGQ4ZmE4LnNldENvbnRlbnQoaHRtbF9lOGE1ZWI4ZWQ4NjU0M2ZjOTdmMWY0NDlhMTAxMjc5Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc0ZWIxZWM4ZDI4MjRiMjg4Y2RjMDc2OTliYmY3Y2RmLmJpbmRQb3B1cChwb3B1cF84OWU4ZmUyYzdiOTA0MjQyYmJiZGEzOGFhZmRkOGZhOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MTlkZjAyNDgzNTU0YWMwOGQyZGI4NjU5YTZkYmJkZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNDQzNzQxNDEsLTEyMi40MTI5MzA1MjIwNTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZhMjI1ZmZiNDg2NDQ4YzFiNzhhZjVkODMyMWQ3YmFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RhOTZmOWY4MGZjZDRiODNhOTlhYzM0MWU2ZWUxOGM4ID0gJCgnPGRpdiBpZD0iaHRtbF9kYTk2ZjlmODBmY2Q0YjgzYTk5YWMzNDFlNmVlMThjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYTIyNWZmYjQ4NjQ0OGMxYjc4YWY1ZDgzMjFkN2JhZC5zZXRDb250ZW50KGh0bWxfZGE5NmY5ZjgwZmNkNGI4M2E5OWFjMzQxZTZlZTE4YzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85MTlkZjAyNDgzNTU0YWMwOGQyZGI4NjU5YTZkYmJkZi5iaW5kUG9wdXAocG9wdXBfZmEyMjVmZmI0ODY0NDhjMWI3OGFmNWQ4MzIxZDdiYWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTg3YjdkM2QyMmJkNDdiYThlMTBhNDY3YzY1YWZiMzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA5Mzg5OWY0NDEwZDQ5MGE4OTc5OGFjZTQxNjNiOGM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MxMWYxMTA4ZmE2MzQxZWFhMDZlMjE0MDEwZmRhYmUyID0gJCgnPGRpdiBpZD0iaHRtbF9jMTFmMTEwOGZhNjM0MWVhYTA2ZTIxNDAxMGZkYWJlMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wOTM4OTlmNDQxMGQ0OTBhODk3OThhY2U0MTYzYjhjOC5zZXRDb250ZW50KGh0bWxfYzExZjExMDhmYTYzNDFlYWEwNmUyMTQwMTBmZGFiZTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85ODdiN2QzZDIyYmQ0N2JhOGUxMGE0NjdjNjVhZmIzMS5iaW5kUG9wdXAocG9wdXBfMDkzODk5ZjQ0MTBkNDkwYTg5Nzk4YWNlNDE2M2I4YzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTE4MDI4OGJiY2ZjNDlhMTg2YWM5NjU4M2FmY2VjZDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMTdmNTc0ODQ4Mjc0ZDc0YTM3MzQ5MzEyZGFiYjM5ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYWQ4NGVkYjI0YTg0MGI5YWZlNTIwYWUxYjIzOTA4NCA9ICQoJzxkaXYgaWQ9Imh0bWxfM2FkODRlZGIyNGE4NDBiOWFmZTUyMGFlMWIyMzkwODQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMTdmNTc0ODQ4Mjc0ZDc0YTM3MzQ5MzEyZGFiYjM5ZS5zZXRDb250ZW50KGh0bWxfM2FkODRlZGIyNGE4NDBiOWFmZTUyMGFlMWIyMzkwODQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xMTgwMjg4YmJjZmM0OWExODZhYzk2NTgzYWZjZWNkMi5iaW5kUG9wdXAocG9wdXBfMDE3ZjU3NDg0ODI3NGQ3NGEzNzM0OTMxMmRhYmIzOWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWFkZTYzMjBmMjllNDE0ZjgyMTkwOTE3MDg2NzM3YTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDhmODNlMjdkZTNmNDQ2ODkwNjQ3MWFmYWJkZGVkNmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTU5ZTllOTc4MmVhNGNhYTlmZmE3MTRmZTJmYTMwODMgPSAkKCc8ZGl2IGlkPSJodG1sXzU1OWU5ZTk3ODJlYTRjYWE5ZmZhNzE0ZmUyZmEzMDgzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOGY4M2UyN2RlM2Y0NDY4OTA2NDcxYWZhYmRkZWQ2Yy5zZXRDb250ZW50KGh0bWxfNTU5ZTllOTc4MmVhNGNhYTlmZmE3MTRmZTJmYTMwODMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hYWRlNjMyMGYyOWU0MTRmODIxOTA5MTcwODY3MzdhNS5iaW5kUG9wdXAocG9wdXBfZDhmODNlMjdkZTNmNDQ2ODkwNjQ3MWFmYWJkZGVkNmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjNhMjY2OWJiYmIxNGJkYTk1ZGQ0YTQzNDkxYWViYzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTM2MTgzOTc4ZWUyNDUyZGE2NTIzZGQwZDFjZGMzMTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2Y2MWQxMTUyMjE1NGY3NzljMDI1MDc5YmRhNDMwMDcgPSAkKCc8ZGl2IGlkPSJodG1sX2NmNjFkMTE1MjIxNTRmNzc5YzAyNTA3OWJkYTQzMDA3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTM2MTgzOTc4ZWUyNDUyZGE2NTIzZGQwZDFjZGMzMTUuc2V0Q29udGVudChodG1sX2NmNjFkMTE1MjIxNTRmNzc5YzAyNTA3OWJkYTQzMDA3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjNhMjY2OWJiYmIxNGJkYTk1ZGQ0YTQzNDkxYWViYzcuYmluZFBvcHVwKHBvcHVwXzkzNjE4Mzk3OGVlMjQ1MmRhNjUyM2RkMGQxY2RjMzE1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FkOWMzOTI2MGI0OTQ2NWE4Y2MyNjhmNDQ3YTFmNTBmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA5ZGFjMDE5Nzg0ODRhMmFiNmExNmYxYWJmYzBmODVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNiNWM3MGU1ZGJhZjQzZGViMzdjY2QwNjQxODA1MGYxID0gJCgnPGRpdiBpZD0iaHRtbF8zYjVjNzBlNWRiYWY0M2RlYjM3Y2NkMDY0MTgwNTBmMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA5ZGFjMDE5Nzg0ODRhMmFiNmExNmYxYWJmYzBmODVkLnNldENvbnRlbnQoaHRtbF8zYjVjNzBlNWRiYWY0M2RlYjM3Y2NkMDY0MTgwNTBmMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FkOWMzOTI2MGI0OTQ2NWE4Y2MyNjhmNDQ3YTFmNTBmLmJpbmRQb3B1cChwb3B1cF8wOWRhYzAxOTc4NDg0YTJhYjZhMTZmMWFiZmMwZjg1ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMDNkNjJiM2MxY2M0YTVlYjU1MTNiM2UxMWVkZDcyZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDk5MTI5NDQzNjYsLTEyMi40Mzc3OTk3MDM0NjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMwMTc2YTgyZGM3MTRlNzY4MWIxNzQzMDJiMTIzOTQxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFiZjUzZDk4MTA2ODQ5YTBiMzliYTdiNDA0MWM3ZmVmID0gJCgnPGRpdiBpZD0iaHRtbF8xYmY1M2Q5ODEwNjg0OWEwYjM5YmE3YjQwNDFjN2ZlZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzAxNzZhODJkYzcxNGU3NjgxYjE3NDMwMmIxMjM5NDEuc2V0Q29udGVudChodG1sXzFiZjUzZDk4MTA2ODQ5YTBiMzliYTdiNDA0MWM3ZmVmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzAzZDYyYjNjMWNjNGE1ZWI1NTEzYjNlMTFlZGQ3MmQuYmluZFBvcHVwKHBvcHVwXzMwMTc2YTgyZGM3MTRlNzY4MWIxNzQzMDJiMTIzOTQxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VjMDI0YzhjMjI0ZDRlNzBhM2UxMDA1MGEzZTFhMDZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjcxOGQwZjYxNzllNDQ2M2JhNzMzY2E1MjAwZDlkYWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzE2NmRkYmE2YTU2NGIyMWJmMzFiMjJiMGRkNmZlODEgPSAkKCc8ZGl2IGlkPSJodG1sX2MxNjZkZGJhNmE1NjRiMjFiZjMxYjIyYjBkZDZmZTgxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjcxOGQwZjYxNzllNDQ2M2JhNzMzY2E1MjAwZDlkYWIuc2V0Q29udGVudChodG1sX2MxNjZkZGJhNmE1NjRiMjFiZjMxYjIyYjBkZDZmZTgxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWMwMjRjOGMyMjRkNGU3MGEzZTEwMDUwYTNlMWEwNmUuYmluZFBvcHVwKHBvcHVwX2I3MThkMGY2MTc5ZTQ0NjNiYTczM2NhNTIwMGQ5ZGFiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFiYTViYTVhNDI0ZjRhMzU5OGNkMmVhZTBlNDhlZjFiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjhhMWY1MWRhN2U5NGY1ZWEyYmVlOGMzYTg2OGRiNmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTFlYzIxOGYwNTYyNGI3N2FhNzU0YjQ1M2ZhYzU3OWEgPSAkKCc8ZGl2IGlkPSJodG1sX2UxZWMyMThmMDU2MjRiNzdhYTc1NGI0NTNmYWM1NzlhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjhhMWY1MWRhN2U5NGY1ZWEyYmVlOGMzYTg2OGRiNmEuc2V0Q29udGVudChodG1sX2UxZWMyMThmMDU2MjRiNzdhYTc1NGI0NTNmYWM1NzlhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWJhNWJhNWE0MjRmNGEzNTk4Y2QyZWFlMGU0OGVmMWIuYmluZFBvcHVwKHBvcHVwXzY4YTFmNTFkYTdlOTRmNWVhMmJlZThjM2E4NjhkYjZhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2E5MmY4M2Q3OGEzNTQzOTBiNWIzY2FhYmUxNTg0Y2JkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMjQ1ODIyMzkxNywtMTIyLjQ0NjYxMjk3ODgzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjBjNThjYjliMjk5NDYzMjkzOWUzNzU4OTczN2U1MWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODAzOTA3M2Q3Mzg3NGI5NmEyYWE5N2YxNzVlN2NmZDIgPSAkKCc8ZGl2IGlkPSJodG1sXzgwMzkwNzNkNzM4NzRiOTZhMmFhOTdmMTc1ZTdjZmQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjBjNThjYjliMjk5NDYzMjkzOWUzNzU4OTczN2U1MWEuc2V0Q29udGVudChodG1sXzgwMzkwNzNkNzM4NzRiOTZhMmFhOTdmMTc1ZTdjZmQyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTkyZjgzZDc4YTM1NDM5MGI1YjNjYWFiZTE1ODRjYmQuYmluZFBvcHVwKHBvcHVwX2IwYzU4Y2I5YjI5OTQ2MzI5MzllMzc1ODk3MzdlNTFhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzljZWY1ZDM4ZDUwYTQzYzg5MGY1YjAxNTAwMGNiNDk3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mOGI3NzAxZDFkMWM0YzE5OTRiNGM5NmVhNmNmZjJkOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kY2RjNjhiMWU0NGQ0YmFmOGFjMDFkMWZlZWEwZWMxMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZGNkYzY4YjFlNDRkNGJhZjhhYzAxZDFmZWVhMGVjMTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjhiNzcwMWQxZDFjNGMxOTk0YjRjOTZlYTZjZmYyZDkuc2V0Q29udGVudChodG1sX2RjZGM2OGIxZTQ0ZDRiYWY4YWMwMWQxZmVlYTBlYzEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWNlZjVkMzhkNTBhNDNjODkwZjViMDE1MDAwY2I0OTcuYmluZFBvcHVwKHBvcHVwX2Y4Yjc3MDFkMWQxYzRjMTk5NGI0Yzk2ZWE2Y2ZmMmQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdlZjg2Njg1MmNlMDRlZjM4MDBiODY2NzRiOTk4YTNiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzMxOGFkZmI3ZmFiNDQ4MmJlOWFiMmE2Y2ZjMzNkM2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGI1ZDc3MDFlYjYyNDQyODhkZGUwZjY5MjQ0OGIwMGYgPSAkKCc8ZGl2IGlkPSJodG1sXzBiNWQ3NzAxZWI2MjQ0Mjg4ZGRlMGY2OTI0NDhiMDBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzMThhZGZiN2ZhYjQ0ODJiZTlhYjJhNmNmYzMzZDNlLnNldENvbnRlbnQoaHRtbF8wYjVkNzcwMWViNjI0NDI4OGRkZTBmNjkyNDQ4YjAwZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdlZjg2Njg1MmNlMDRlZjM4MDBiODY2NzRiOTk4YTNiLmJpbmRQb3B1cChwb3B1cF9jMzE4YWRmYjdmYWI0NDgyYmU5YWIyYTZjZmMzM2QzZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wNzE2ZDExMDliZDY0NDFjYTNmNDJjYzZhOTA3ZjE1YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmVlN2I3ZjIyY2M5NDQ1ZTg2M2U0NmM3ZGMxMGI2MjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjMxZjY4MmFmMmJlNGRiZTkyMjYxMDcyN2VkMDQwMDggPSAkKCc8ZGl2IGlkPSJodG1sXzYzMWY2ODJhZjJiZTRkYmU5MjI2MTA3MjdlZDA0MDA4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmVlN2I3ZjIyY2M5NDQ1ZTg2M2U0NmM3ZGMxMGI2MjIuc2V0Q29udGVudChodG1sXzYzMWY2ODJhZjJiZTRkYmU5MjI2MTA3MjdlZDA0MDA4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDcxNmQxMTA5YmQ2NDQxY2EzZjQyY2M2YTkwN2YxNWEuYmluZFBvcHVwKHBvcHVwXzJlZTdiN2YyMmNjOTQ0NWU4NjNlNDZjN2RjMTBiNjIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdiMGExNGVjNzY1ZTRlY2FhYmYzN2FiNGViNWExNmUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2VlOGM3MTZmNDM2NGY2OWI3YmIwNjVjYTQ2OTVlOWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmYxMzIyZjFkMTA5NDVmZGE1NjE2N2I2ZDI5MmIxYzggPSAkKCc8ZGl2IGlkPSJodG1sX2JmMTMyMmYxZDEwOTQ1ZmRhNTYxNjdiNmQyOTJiMWM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QUk9TVElUVVRJT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlZThjNzE2ZjQzNjRmNjliN2JiMDY1Y2E0Njk1ZTlkLnNldENvbnRlbnQoaHRtbF9iZjEzMjJmMWQxMDk0NWZkYTU2MTY3YjZkMjkyYjFjOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdiMGExNGVjNzY1ZTRlY2FhYmYzN2FiNGViNWExNmUyLmJpbmRQb3B1cChwb3B1cF83ZWU4YzcxNmY0MzY0ZjY5YjdiYjA2NWNhNDY5NWU5ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83Y2ExNDg5OTI3NWQ0YzgwOWYyNjkzNmZiOTQxZmYxMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q3NTA5YTdmNmM0NjQyYjZhOGJhZjFlOTU5Zjg4MzIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNhMjBjYWNkOGY0NzRiZTQ4ZDhkYmEzYzMzZTUxMzlhID0gJCgnPGRpdiBpZD0iaHRtbF8zYTIwY2FjZDhmNDc0YmU0OGQ4ZGJhM2MzM2U1MTM5YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q3NTA5YTdmNmM0NjQyYjZhOGJhZjFlOTU5Zjg4MzIyLnNldENvbnRlbnQoaHRtbF8zYTIwY2FjZDhmNDc0YmU0OGQ4ZGJhM2MzM2U1MTM5YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdjYTE0ODk5Mjc1ZDRjODA5ZjI2OTM2ZmI5NDFmZjEzLmJpbmRQb3B1cChwb3B1cF9kNzUwOWE3ZjZjNDY0MmI2YThiYWYxZTk1OWY4ODMyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zYWRiMjE3OWRhMWI0MTAwOTdmYmMyNTZiODUzNTlkOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MzI5MTgwNjkwMjk5NiwtMTIyLjQzNjYxNDE4MTMzMTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NzdhOGU0NzEyOTE0YWFkYTU3NjEzODYxYzE3OGE5NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNWE4Y2MyMTU5ZDk0NzZlYmFkM2E4YWJkODAyN2Q0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDVhOGNjMjE1OWQ5NDc2ZWJhZDNhOGFiZDgwMjdkNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjc3YThlNDcxMjkxNGFhZGE1NzYxMzg2MWMxNzhhOTcuc2V0Q29udGVudChodG1sXzA1YThjYzIxNTlkOTQ3NmViYWQzYThhYmQ4MDI3ZDQzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfM2FkYjIxNzlkYTFiNDEwMDk3ZmJjMjU2Yjg1MzU5ZDkuYmluZFBvcHVwKHBvcHVwXzY3N2E4ZTQ3MTI5MTRhYWRhNTc2MTM4NjFjMTc4YTk3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBjYjdjMDkwMjY0NDQ0NTI5MGRhOGYyNTg4NWY2OWZjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgwNjViZGVlNGI4MjQ5MDdhYjc1YjZiOWQ4NzdlYjRjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M1NmZiYTA5ZjFkMDRhOTU5YTE0MGMzZjVjZWI0MTFmID0gJCgnPGRpdiBpZD0iaHRtbF9jNTZmYmEwOWYxZDA0YTk1OWExNDBjM2Y1Y2ViNDExZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODA2NWJkZWU0YjgyNDkwN2FiNzViNmI5ZDg3N2ViNGMuc2V0Q29udGVudChodG1sX2M1NmZiYTA5ZjFkMDRhOTU5YTE0MGMzZjVjZWI0MTFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGNiN2MwOTAyNjQ0NDQ1MjkwZGE4ZjI1ODg1ZjY5ZmMuYmluZFBvcHVwKHBvcHVwXzgwNjViZGVlNGI4MjQ5MDdhYjc1YjZiOWQ4NzdlYjRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2EzNGUwNTg1OTRhMjRkZWU4YzAwYTk5ZDMzOTAwOTlmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZkNDViODIzMTNlOTQ2N2NhN2U3OWIwMzYwYWJiYjIzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNkYjEzMmMwOWY3OTRmYzRiZDIyMzE1MzZkY2VhNmI2ID0gJCgnPGRpdiBpZD0iaHRtbF8zZGIxMzJjMDlmNzk0ZmM0YmQyMjMxNTM2ZGNlYTZiNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZkNDViODIzMTNlOTQ2N2NhN2U3OWIwMzYwYWJiYjIzLnNldENvbnRlbnQoaHRtbF8zZGIxMzJjMDlmNzk0ZmM0YmQyMjMxNTM2ZGNlYTZiNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2EzNGUwNTg1OTRhMjRkZWU4YzAwYTk5ZDMzOTAwOTlmLmJpbmRQb3B1cChwb3B1cF9mZDQ1YjgyMzEzZTk0NjdjYTdlNzliMDM2MGFiYmIyMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82YjFlZTdjZTlhZjk0M2ZmYjgwN2E4MmI0MWE3OGE5YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyODQxODA3MDY2MDIwNCwtMTIyLjQ1MDAwMDc5MDQ0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYThiZjZkYTU0YjhhNDliZDkwZTE5YmE5ZDIzYWFiNDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzE4MDYzM2I4Yzg1NDg5MmJkOTZlYzYxZmUzYTFkMDUgPSAkKCc8ZGl2IGlkPSJodG1sX2MxODA2MzNiOGM4NTQ4OTJiZDk2ZWM2MWZlM2ExZDA1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOGJmNmRhNTRiOGE0OWJkOTBlMTliYTlkMjNhYWI0MS5zZXRDb250ZW50KGh0bWxfYzE4MDYzM2I4Yzg1NDg5MmJkOTZlYzYxZmUzYTFkMDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82YjFlZTdjZTlhZjk0M2ZmYjgwN2E4MmI0MWE3OGE5Yy5iaW5kUG9wdXAocG9wdXBfYThiZjZkYTU0YjhhNDliZDkwZTE5YmE5ZDIzYWFiNDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzU2YTZmMzgyYjk3NDRlYjlhMDJkNTBhZTIzMjRlM2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84OWFiYzU3OTdmMWM0M2FjODZhZmU0NGIzNmRmYzA4YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNjFjOGMyZjUwMTk0MDJlODAzNmEwY2JmZDgxZjJiNiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzYxYzhjMmY1MDE5NDAyZTgwMzZhMGNiZmQ4MWYyYjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84OWFiYzU3OTdmMWM0M2FjODZhZmU0NGIzNmRmYzA4Yi5zZXRDb250ZW50KGh0bWxfYzYxYzhjMmY1MDE5NDAyZTgwMzZhMGNiZmQ4MWYyYjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NTZhNmYzODJiOTc0NGViOWEwMmQ1MGFlMjMyNGUzYy5iaW5kUG9wdXAocG9wdXBfODlhYmM1Nzk3ZjFjNDNhYzg2YWZlNDRiMzZkZmMwOGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjUxM2ExNTYwYzAxNGE2Mzk3OGU0NWFmOWFjMmFkNDYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIyYWI4YTFkYmM0ODQwMWM4OGM2MmJiMzU2MjJmZjc0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg4NzNmNjJmZDQ4MzQxNzg4NDI3YzczZmZiOThlNDJkID0gJCgnPGRpdiBpZD0iaHRtbF84ODczZjYyZmQ0ODM0MTc4ODQyN2M3M2ZmYjk4ZTQyZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjJhYjhhMWRiYzQ4NDAxYzg4YzYyYmIzNTYyMmZmNzQuc2V0Q29udGVudChodG1sXzg4NzNmNjJmZDQ4MzQxNzg4NDI3YzczZmZiOThlNDJkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjUxM2ExNTYwYzAxNGE2Mzk3OGU0NWFmOWFjMmFkNDYuYmluZFBvcHVwKHBvcHVwXzIyYWI4YTFkYmM0ODQwMWM4OGM2MmJiMzU2MjJmZjc0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA2YWU5NWE0MDJmYTQwMzJhYzcxYjg4MTU4NjhjMWY2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NhY2MzMmYyMzVkZjQxMDg5M2QxYzkwNmY4MGQyOWNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlhYzgyMTNiZWIxYzRmZGRiNGVkMDU1Mzk2NWRmMTU4ID0gJCgnPGRpdiBpZD0iaHRtbF85YWM4MjEzYmViMWM0ZmRkYjRlZDA1NTM5NjVkZjE1OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYWNjMzJmMjM1ZGY0MTA4OTNkMWM5MDZmODBkMjljYi5zZXRDb250ZW50KGh0bWxfOWFjODIxM2JlYjFjNGZkZGI0ZWQwNTUzOTY1ZGYxNTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wNmFlOTVhNDAyZmE0MDMyYWM3MWI4ODE1ODY4YzFmNi5iaW5kUG9wdXAocG9wdXBfY2FjYzMyZjIzNWRmNDEwODkzZDFjOTA2ZjgwZDI5Y2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGFkM2U5NzQ4NDUxNDc2MGJlNmY0YjJjZmZjMjhmMzkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjNlMDFmYzJkNTI2NDExZTllZDY0NTk0ZTY2ZDY3YzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWMxYzM4ZGE5NThlNDIyN2E0NGYwMjI3NmZmNDQzYzIgPSAkKCc8ZGl2IGlkPSJodG1sXzFjMWMzOGRhOTU4ZTQyMjdhNDRmMDIyNzZmZjQ0M2MyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjNlMDFmYzJkNTI2NDExZTllZDY0NTk0ZTY2ZDY3Yzguc2V0Q29udGVudChodG1sXzFjMWMzOGRhOTU4ZTQyMjdhNDRmMDIyNzZmZjQ0M2MyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGFkM2U5NzQ4NDUxNDc2MGJlNmY0YjJjZmZjMjhmMzkuYmluZFBvcHVwKHBvcHVwXzIzZTAxZmMyZDUyNjQxMWU5ZWQ2NDU5NGU2NmQ2N2M4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQzMTM3ZjViYzBhZjQ2MGY5NjAxOTg0OTRmZWE0NjQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzNWNlMjRjMzczNjQ5NzY4MDRjMmUxYzQyODI1NWVmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgxOWMwZTUwMDkwNDQ0YTFiNmY1ZDEwMTQzMTUzMGU2ID0gJCgnPGRpdiBpZD0iaHRtbF84MTljMGU1MDA5MDQ0NGExYjZmNWQxMDE0MzE1MzBlNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkzNWNlMjRjMzczNjQ5NzY4MDRjMmUxYzQyODI1NWVmLnNldENvbnRlbnQoaHRtbF84MTljMGU1MDA5MDQ0NGExYjZmNWQxMDE0MzE1MzBlNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQzMTM3ZjViYzBhZjQ2MGY5NjAxOTg0OTRmZWE0NjQwLmJpbmRQb3B1cChwb3B1cF85MzVjZTI0YzM3MzY0OTc2ODA0YzJlMWM0MjgyNTVlZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZmJmMTg0ZmJmNGM0YWExOGRmMDNlNmVlMWU4Yjk3NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjQyNzM5YWY2NWZmNDVjNDhiOWI3MmY2MGI0NDdmZDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTYxZWU5NzVjMmUxNDQ1ODhiMDNkNzkzZjVmMjZkMDMgPSAkKCc8ZGl2IGlkPSJodG1sX2E2MWVlOTc1YzJlMTQ0NTg4YjAzZDc5M2Y1ZjI2ZDAzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNDI3MzlhZjY1ZmY0NWM0OGI5YjcyZjYwYjQ0N2ZkOC5zZXRDb250ZW50KGh0bWxfYTYxZWU5NzVjMmUxNDQ1ODhiMDNkNzkzZjVmMjZkMDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZmJmMTg0ZmJmNGM0YWExOGRmMDNlNmVlMWU4Yjk3NC5iaW5kUG9wdXAocG9wdXBfZjQyNzM5YWY2NWZmNDVjNDhiOWI3MmY2MGI0NDdmZDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzkwOGFjNzJiYjFhNDg1OTgzN2FmYzQ0MzQyMGYwYzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MjQ5ZDA1NzI3Nzc0ZjY4ODBmNTlhNWFlOTE5OThjMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NWVhMjNiOGNmOTE0NWEwYjVkM2RkY2M0NWMzYmY0MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTVlYTIzYjhjZjkxNDVhMGI1ZDNkZGNjNDVjM2JmNDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MjQ5ZDA1NzI3Nzc0ZjY4ODBmNTlhNWFlOTE5OThjMC5zZXRDb250ZW50KGh0bWxfNTVlYTIzYjhjZjkxNDVhMGI1ZDNkZGNjNDVjM2JmNDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83OTA4YWM3MmJiMWE0ODU5ODM3YWZjNDQzNDIwZjBjMy5iaW5kUG9wdXAocG9wdXBfNDI0OWQwNTcyNzc3NGY2ODgwZjU5YTVhZTkxOTk4YzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTcyM2JiNDc3NDU4NDcyOWE0OThiODc5MTQzMDVlNWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NjkwMDdlZTkyNTM0ZDM0OGI1MzI0Nzc2ZTMyNTg2YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMDBhY2JmZmMzZjQ0NzFmOGI5YTVkYThiM2FhYzA4OCA9ICQoJzxkaXYgaWQ9Imh0bWxfMTAwYWNiZmZjM2Y0NDcxZjhiOWE1ZGE4YjNhYWMwODgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDY5MDA3ZWU5MjUzNGQzNDhiNTMyNDc3NmUzMjU4NmEuc2V0Q29udGVudChodG1sXzEwMGFjYmZmYzNmNDQ3MWY4YjlhNWRhOGIzYWFjMDg4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTcyM2JiNDc3NDU4NDcyOWE0OThiODc5MTQzMDVlNWYuYmluZFBvcHVwKHBvcHVwXzQ2OTAwN2VlOTI1MzRkMzQ4YjUzMjQ3NzZlMzI1ODZhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIwNDAwYjZmZjg0NDQ3YjE4NzRhYmRmNDFmYzdhOGU1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FkYjZiMjY2ZjNhNDRjY2VhMTc2NzE2ZDA2Y2Y5YTgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1YjAzNTZkMzRlMzQ4YjM5OTY4NmNkZGQ5NmM2ZjYzID0gJCgnPGRpdiBpZD0iaHRtbF8yNWIwMzU2ZDM0ZTM0OGIzOTk2ODZjZGRkOTZjNmY2MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZGI2YjI2NmYzYTQ0Y2NlYTE3NjcxNmQwNmNmOWE4MS5zZXRDb250ZW50KGh0bWxfMjViMDM1NmQzNGUzNDhiMzk5Njg2Y2RkZDk2YzZmNjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yMDQwMGI2ZmY4NDQ0N2IxODc0YWJkZjQxZmM3YThlNS5iaW5kUG9wdXAocG9wdXBfYWRiNmIyNjZmM2E0NGNjZWExNzY3MTZkMDZjZjlhODEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDkzYjA5NDc0MTE3NDE0Mjg0MjBiNWU1NDZiZmNjMWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E0ZTRhNmZmMWQxMTQ1ZDBhZDNhYzE1OTlhYzA2NDk4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RkZjUwNzcwNTYwNDRmZmE5ZmNlNDVmZTQxMjA0MzI0ID0gJCgnPGRpdiBpZD0iaHRtbF9kZGY1MDc3MDU2MDQ0ZmZhOWZjZTQ1ZmU0MTIwNDMyNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E0ZTRhNmZmMWQxMTQ1ZDBhZDNhYzE1OTlhYzA2NDk4LnNldENvbnRlbnQoaHRtbF9kZGY1MDc3MDU2MDQ0ZmZhOWZjZTQ1ZmU0MTIwNDMyNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ5M2IwOTQ3NDExNzQxNDI4NDIwYjVlNTQ2YmZjYzFjLmJpbmRQb3B1cChwb3B1cF9hNGU0YTZmZjFkMTE0NWQwYWQzYWMxNTk5YWMwNjQ5OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYmQ5Yzc3Y2ZkMjM0Njk5ODRlN2E4MjQzMDgxMWU4MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc1MWZmMjRiYzJjOTQzYjI5NjVkYTU1MzBhOTU1OTc0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MyZjFhZWM3M2IzMzQyNjdiZmUxNDdhNjljNmE5NjYwID0gJCgnPGRpdiBpZD0iaHRtbF9jMmYxYWVjNzNiMzM0MjY3YmZlMTQ3YTY5YzZhOTY2MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVTktFTk5FU1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1MWZmMjRiYzJjOTQzYjI5NjVkYTU1MzBhOTU1OTc0LnNldENvbnRlbnQoaHRtbF9jMmYxYWVjNzNiMzM0MjY3YmZlMTQ3YTY5YzZhOTY2MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBiZDljNzdjZmQyMzQ2OTk4NGU3YTgyNDMwODExZTgxLmJpbmRQb3B1cChwb3B1cF83NTFmZjI0YmMyYzk0M2IyOTY1ZGE1NTMwYTk1NTk3NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MmYxNWJjNzQxMDQ0OTI2OWU1ZGJhNzhiNWFhYTZlNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU0NjVlYjlhNzE3NjQ1NzI5ZGU0MDU2NWU0NjM5OGNkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YwMzRlOWY2OTcwYjQxODJiZTc5MGRkY2Y4MTE1ZTQzID0gJCgnPGRpdiBpZD0iaHRtbF9mMDM0ZTlmNjk3MGI0MTgyYmU3OTBkZGNmODExNWU0MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU0NjVlYjlhNzE3NjQ1NzI5ZGU0MDU2NWU0NjM5OGNkLnNldENvbnRlbnQoaHRtbF9mMDM0ZTlmNjk3MGI0MTgyYmU3OTBkZGNmODExNWU0Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYyZjE1YmM3NDEwNDQ5MjY5ZTVkYmE3OGI1YWFhNmU0LmJpbmRQb3B1cChwb3B1cF81NDY1ZWI5YTcxNzY0NTcyOWRlNDA1NjVlNDYzOThjZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZTI2NDE4ZjQ2ZGM0Y2UzYjY0NzRkMWFkZTI2YWE5NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NGJkZmMxMTQzMGE0OTY5OGY1NDE1NmZjMDNhNjdiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MmUwMDUzY2Q4Y2M0NmE0OWZmMDhjOTA2NjMyYTQ4NSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDJlMDA1M2NkOGNjNDZhNDlmZjA4YzkwNjYzMmE0ODUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTRiZGZjMTE0MzBhNDk2OThmNTQxNTZmYzAzYTY3YjUuc2V0Q29udGVudChodG1sXzQyZTAwNTNjZDhjYzQ2YTQ5ZmYwOGM5MDY2MzJhNDg1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWUyNjQxOGY0NmRjNGNlM2I2NDc0ZDFhZGUyNmFhOTYuYmluZFBvcHVwKHBvcHVwXzU0YmRmYzExNDMwYTQ5Njk4ZjU0MTU2ZmMwM2E2N2I1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhiY2FhOWQ4YzFiODRkNzU4YmE3MTYxNzY3MDlmNzI2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGIzM2U4MTE2Y2ExNGYxMzk5ZDc5MTg2MDhhNDMyZjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjJhOGRkYzQ3OGUxNDE2ZjlhMjBhNWU0YmZmOThhMzIgPSAkKCc8ZGl2IGlkPSJodG1sXzYyYThkZGM0NzhlMTQxNmY5YTIwYTVlNGJmZjk4YTMyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGIzM2U4MTE2Y2ExNGYxMzk5ZDc5MTg2MDhhNDMyZjAuc2V0Q29udGVudChodG1sXzYyYThkZGM0NzhlMTQxNmY5YTIwYTVlNGJmZjk4YTMyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGJjYWE5ZDhjMWI4NGQ3NThiYTcxNjE3NjcwOWY3MjYuYmluZFBvcHVwKHBvcHVwX2RiMzNlODExNmNhMTRmMTM5OWQ3OTE4NjA4YTQzMmYwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NkOWQyOGQwMGI5NzQ0MDU5ZmJmODZjZjAzNWI0M2VjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNWFkNGM0ODkzMjU0NDg2OTBlMDkxMTg4NDBhYmMxYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zOTJkMWE2YjAxY2Q0MTRiYWRlNjY3NmM1MGJjZjNkOSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzkyZDFhNmIwMWNkNDE0YmFkZTY2NzZjNTBiY2YzZDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzVhZDRjNDg5MzI1NDQ4NjkwZTA5MTE4ODQwYWJjMWMuc2V0Q29udGVudChodG1sXzM5MmQxYTZiMDFjZDQxNGJhZGU2Njc2YzUwYmNmM2Q5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2Q5ZDI4ZDAwYjk3NDQwNTlmYmY4NmNmMDM1YjQzZWMuYmluZFBvcHVwKHBvcHVwX2M1YWQ0YzQ4OTMyNTQ0ODY5MGUwOTExODg0MGFiYzFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2E1NmQ3YjA4MmY1MDRjMjY4N2Y5MGM3ZDAzNjQzNDI0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82MDI4YmZjZWMyNWE0ZDIxYTI3ZDI5OGEwYWY4NDgyMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81M2MxYWQ4MjJmODY0MTBkYjdkMDNmMTRhMGE4ZjM0NiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTNjMWFkODIyZjg2NDEwZGI3ZDAzZjE0YTBhOGYzNDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjAyOGJmY2VjMjVhNGQyMWEyN2QyOThhMGFmODQ4MjIuc2V0Q29udGVudChodG1sXzUzYzFhZDgyMmY4NjQxMGRiN2QwM2YxNGEwYThmMzQ2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTU2ZDdiMDgyZjUwNGMyNjg3ZjkwYzdkMDM2NDM0MjQuYmluZFBvcHVwKHBvcHVwXzYwMjhiZmNlYzI1YTRkMjFhMjdkMjk4YTBhZjg0ODIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RiNzJhOTQyYWY5YzQ1ZWJiNzhhNzM4YjZkMjI5ZGExID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jOTY3OTg5ZjBlZWI0OWFiYTZjMWVlMzlkMTZjYThiYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yODgzY2EzMzliN2U0NDBiOTkwNDYzN2UwNTVhZDhlYyA9ICQoJzxkaXYgaWQ9Imh0bWxfMjg4M2NhMzM5YjdlNDQwYjk5MDQ2MzdlMDU1YWQ4ZWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOTY3OTg5ZjBlZWI0OWFiYTZjMWVlMzlkMTZjYThiYS5zZXRDb250ZW50KGh0bWxfMjg4M2NhMzM5YjdlNDQwYjk5MDQ2MzdlMDU1YWQ4ZWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kYjcyYTk0MmFmOWM0NWViYjc4YTczOGI2ZDIyOWRhMS5iaW5kUG9wdXAocG9wdXBfYzk2Nzk4OWYwZWViNDlhYmE2YzFlZTM5ZDE2Y2E4YmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2Y5YTg5NWMwMjkyNGFhMWFmODgxNGU5MDRkOWVlZWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjMzNzU4MDU4MDU5LC0xMjIuNDIwNDM0NzI0NTUyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VmNWUyNjE0NzEzMDQwOWY5M2Y3ODI0ZmJkMmQwOTg0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FmYjg3Zjk3M2Y3MjRhYjM5YTM1MzdlYzgzNDhkNjZhID0gJCgnPGRpdiBpZD0iaHRtbF9hZmI4N2Y5NzNmNzI0YWIzOWEzNTM3ZWM4MzQ4ZDY2YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VmNWUyNjE0NzEzMDQwOWY5M2Y3ODI0ZmJkMmQwOTg0LnNldENvbnRlbnQoaHRtbF9hZmI4N2Y5NzNmNzI0YWIzOWEzNTM3ZWM4MzQ4ZDY2YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NmOWE4OTVjMDI5MjRhYTFhZjg4MTRlOTA0ZDllZWVlLmJpbmRQb3B1cChwb3B1cF9lZjVlMjYxNDcxMzA0MDlmOTNmNzgyNGZiZDJkMDk4NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZjMyMDI0N2JmNWI0N2U5YWU4ODgxODMxNjIyNWEwYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTk3MGI1ZjFmMjg4NGRkODg1MWUxOWFhY2I3ZmEwZWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTM0NTEwMzk4MmE1NDUyMzlkNjEzYjgwOGYyM2Q4N2QgPSAkKCc8ZGl2IGlkPSJodG1sXzEzNDUxMDM5ODJhNTQ1MjM5ZDYxM2I4MDhmMjNkODdkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE5NzBiNWYxZjI4ODRkZDg4NTFlMTlhYWNiN2ZhMGVhLnNldENvbnRlbnQoaHRtbF8xMzQ1MTAzOTgyYTU0NTIzOWQ2MTNiODA4ZjIzZDg3ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBmMzIwMjQ3YmY1YjQ3ZTlhZTg4ODE4MzE2MjI1YTBhLmJpbmRQb3B1cChwb3B1cF8xOTcwYjVmMWYyODg0ZGQ4ODUxZTE5YWFjYjdmYTBlYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jN2EyNjEwMmYxZTU0OGYyOGI0Zjc2N2RjZjgyYTdiYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTY1MTc2NzdlYWQ3NDY5MmI3ZDFkNDYyMTFmMjdlNTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWZlY2ZjOGRhYmJkNDdlOGFhNTA0OGEyNTg3YTQ2MzMgPSAkKCc8ZGl2IGlkPSJodG1sX2VmZWNmYzhkYWJiZDQ3ZThhYTUwNDhhMjU4N2E0NjMzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTY1MTc2NzdlYWQ3NDY5MmI3ZDFkNDYyMTFmMjdlNTQuc2V0Q29udGVudChodG1sX2VmZWNmYzhkYWJiZDQ3ZThhYTUwNDhhMjU4N2E0NjMzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzdhMjYxMDJmMWU1NDhmMjhiNGY3NjdkY2Y4MmE3YmEuYmluZFBvcHVwKHBvcHVwXzU2NTE3Njc3ZWFkNzQ2OTJiN2QxZDQ2MjExZjI3ZTU0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRjMjRmZGY4OGYyYjRmNmQ5ZWVjMzg5YmE3YWUxNjQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1MTkxODI2NzIxNywtMTIyLjQ2NjU1ODc4MDY4M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOThhNDhkNzdmYWU3NDA5MWFiZDdhNzRhMGViZWQzZTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmQ5NDkyZmFhZDAwNDFkNmI1YjIyN2EwZTA4N2JiYzkgPSAkKCc8ZGl2IGlkPSJodG1sXzZkOTQ5MmZhYWQwMDQxZDZiNWIyMjdhMGUwODdiYmM5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OGE0OGQ3N2ZhZTc0MDkxYWJkN2E3NGEwZWJlZDNlMy5zZXRDb250ZW50KGh0bWxfNmQ5NDkyZmFhZDAwNDFkNmI1YjIyN2EwZTA4N2JiYzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80YzI0ZmRmODhmMmI0ZjZkOWVlYzM4OWJhN2FlMTY0MC5iaW5kUG9wdXAocG9wdXBfOThhNDhkNzdmYWU3NDA5MWFiZDdhNzRhMGViZWQzZTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODk1ODI3YjdiNDIyNDBjYmFiOWVjNmM2MGE4YzdiM2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRiZWNmY2EyNjA2NDRmNzZiOGM0YzM0YTg0YWZmM2E2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhmODU2OWE4ODI5NzRkY2E4YzE4ZmU1MmM2Y2E3ZTM3ID0gJCgnPGRpdiBpZD0iaHRtbF84Zjg1NjlhODgyOTc0ZGNhOGMxOGZlNTJjNmNhN2UzNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRiZWNmY2EyNjA2NDRmNzZiOGM0YzM0YTg0YWZmM2E2LnNldENvbnRlbnQoaHRtbF84Zjg1NjlhODgyOTc0ZGNhOGMxOGZlNTJjNmNhN2UzNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg5NTgyN2I3YjQyMjQwY2JhYjllYzZjNjBhOGM3YjNlLmJpbmRQb3B1cChwb3B1cF80YmVjZmNhMjYwNjQ0Zjc2YjhjNGMzNGE4NGFmZjNhNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84NGM1YzI2NGM5NWI0NDM3YWI5ZDJiNTk5ZTVlODE2NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfNzg5OThiM2YxYThlNGQzMWFjNDBmNjAxOGZmYzJmOWEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjE0MmY3MTA0MzJhNGQwYWJkZmI1NGJkOTc0MDNiOWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGFjOWNkYzM5MjJlNDc0Nzg4YjFmYjRkY2NmNDVjYTUgPSAkKCc8ZGl2IGlkPSJodG1sXzRhYzljZGMzOTIyZTQ3NDc4OGIxZmI0ZGNjZjQ1Y2E1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YxNDJmNzEwNDMyYTRkMGFiZGZiNTRiZDk3NDAzYjljLnNldENvbnRlbnQoaHRtbF80YWM5Y2RjMzkyMmU0NzQ3ODhiMWZiNGRjY2Y0NWNhNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg0YzVjMjY0Yzk1YjQ0MzdhYjlkMmI1OTllNWU4MTY0LmJpbmRQb3B1cChwb3B1cF9mMTQyZjcxMDQzMmE0ZDBhYmRmYjU0YmQ5NzQwM2I5Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNWQwNzYyYjk5ZDE0MmNhOGZhNDdhNjBhZmY1NTNkNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE1ZmExNDY4ODUxNDQyZmY5NjQ2MmY0Mjg0Y2Q5NmYwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IwMzkwMDZkNjI3MjRjNjNhNzZmZTRlNDk2YjJkNWM0ID0gJCgnPGRpdiBpZD0iaHRtbF9iMDM5MDA2ZDYyNzI0YzYzYTc2ZmU0ZTQ5NmIyZDVjNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE1ZmExNDY4ODUxNDQyZmY5NjQ2MmY0Mjg0Y2Q5NmYwLnNldENvbnRlbnQoaHRtbF9iMDM5MDA2ZDYyNzI0YzYzYTc2ZmU0ZTQ5NmIyZDVjNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I1ZDA3NjJiOTlkMTQyY2E4ZmE0N2E2MGFmZjU1M2Q3LmJpbmRQb3B1cChwb3B1cF8xNWZhMTQ2ODg1MTQ0MmZmOTY0NjJmNDI4NGNkOTZmMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xMzI2YjI1YTc0Y2I0OTVmOTNmY2U1MzBjYTRkZjcwNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzc4OTk4YjNmMWE4ZTRkMzFhYzQwZjYwMThmZmMyZjlhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRmMzJmODNjYjc1MTQ1YTVhNjIzMDNlMWFjYWVkMjI5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q4MWY2ZTZiYzQ2MTQ2OGZhODNlZWEwZDg5ZWRhNGJjID0gJCgnPGRpdiBpZD0iaHRtbF9kODFmNmU2YmM0NjE0NjhmYTgzZWVhMGQ4OWVkYTRiYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGYzMmY4M2NiNzUxNDVhNWE2MjMwM2UxYWNhZWQyMjkuc2V0Q29udGVudChodG1sX2Q4MWY2ZTZiYzQ2MTQ2OGZhODNlZWEwZDg5ZWRhNGJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTMyNmIyNWE3NGNiNDk1ZjkzZmNlNTMwY2E0ZGY3MDYuYmluZFBvcHVwKHBvcHVwXzRmMzJmODNjYjc1MTQ1YTVhNjIzMDNlMWFjYWVkMjI5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc4MGEzNzEyOTY0NDRiMWM5OGZkNjU4YjIzM2E3NGEzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl83ODk5OGIzZjFhOGU0ZDMxYWM0MGY2MDE4ZmZjMmY5YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNjYzMWRmYWQzYjk0YjYxOTcwNzJlYzlmNGI1ZDUzZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZjgzY2I0NjU3NzI0MDE4OTJjMzU1YjI4YzNiYTA0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfNmY4M2NiNDY1NzcyNDAxODkyYzM1NWIyOGMzYmEwNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U2NjMxZGZhZDNiOTRiNjE5NzA3MmVjOWY0YjVkNTNmLnNldENvbnRlbnQoaHRtbF82ZjgzY2I0NjU3NzI0MDE4OTJjMzU1YjI4YzNiYTA0Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc4MGEzNzEyOTY0NDRiMWM5OGZkNjU4YjIzM2E3NGEzLmJpbmRQb3B1cChwb3B1cF9lNjYzMWRmYWQzYjk0YjYxOTcwNzJlYzlmNGI1ZDUzZik7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7faffa270710>"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from folium import plugins\n",
"\n",
"# let's start again with a clean copy of the map of San Francisco\n",
"sanfran_map = folium.Map(location = [latitude, longitude], zoom_start = 12)\n",
"\n",
"# instantiate a mark cluster object for the incidents in the dataframe\n",
"incidents = plugins.MarkerCluster().add_to(sanfran_map)\n",
"\n",
"# loop through the dataframe and add each data point to the mark cluster\n",
"for lat, lng, label, in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.Marker(\n",
" location=[lat, lng],\n",
" icon=None,\n",
" popup=label,\n",
" ).add_to(incidents)\n",
"\n",
"# display map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Notice how when you zoom out all the way, all markers are grouped into one cluster, *the global cluster*, of 100 markers or crimes, which is the total number of crimes in our dataframe. Once you start zooming in, the *global cluster* will start breaking up into smaller clusters. Zooming in all the way will result in individual markers."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Choropleth Maps <a id=\"8\"></a>\n",
"\n",
"A `Choropleth` map is a thematic map in which areas are shaded or patterned in proportion to the measurement of the statistical variable being displayed on the map, such as population density or per-capita income. The choropleth map provides an easy way to visualize how a measurement varies across a geographic area or it shows the level of variability within a region. Below is a `Choropleth` map of the US depicting the population by square mile per state.\n",
"\n",
"<img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Images/2000_census_population_density_map_by_state.png\" width = 600> "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now, let's create our own `Choropleth` map of the world depicting immigration from various countries to Canada.\n",
"\n",
"Let's first download and import our primary Canadian immigration dataset using *pandas* `read_excel()` method. Normally, before we can do that, we would need to download a module which *pandas* requires to read in excel files. This module is **xlrd**. For your convenience, we have pre-installed this module, so you would not have to worry about that. Otherwise, you would need to run the following line of code to install the **xlrd** module:\n",
"```\n",
"!conda install -c anaconda xlrd --yes\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data downloaded and read into a dataframe!\n"
]
}
],
"source": [
"df_can = pd.read_excel('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.xlsx',\n",
" sheet_name='Canada by Citizenship',\n",
" skiprows=range(20),\n",
" skipfooter=2)\n",
"\n",
"print('Data downloaded and read into a dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Type</th>\n",
" <th>Coverage</th>\n",
" <th>OdName</th>\n",
" <th>AREA</th>\n",
" <th>AreaName</th>\n",
" <th>REG</th>\n",
" <th>RegName</th>\n",
" <th>DEV</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>...</th>\n",
" <th>2004</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Afghanistan</td>\n",
" <td>935</td>\n",
" <td>Asia</td>\n",
" <td>5501</td>\n",
" <td>Southern Asia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>...</td>\n",
" <td>2978</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Albania</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>1450</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Algeria</td>\n",
" <td>903</td>\n",
" <td>Africa</td>\n",
" <td>912</td>\n",
" <td>Northern Africa</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>...</td>\n",
" <td>3616</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>American Samoa</td>\n",
" <td>909</td>\n",
" <td>Oceania</td>\n",
" <td>957</td>\n",
" <td>Polynesia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Andorra</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 43 columns</p>\n",
"</div>"
],
"text/plain": [
" Type Coverage OdName AREA AreaName REG \\\n",
"0 Immigrants Foreigners Afghanistan 935 Asia 5501 \n",
"1 Immigrants Foreigners Albania 908 Europe 925 \n",
"2 Immigrants Foreigners Algeria 903 Africa 912 \n",
"3 Immigrants Foreigners American Samoa 909 Oceania 957 \n",
"4 Immigrants Foreigners Andorra 908 Europe 925 \n",
"\n",
" RegName DEV DevName 1980 ... 2004 2005 2006 \\\n",
"0 Southern Asia 902 Developing regions 16 ... 2978 3436 3009 \n",
"1 Southern Europe 901 Developed regions 1 ... 1450 1223 856 \n",
"2 Northern Africa 902 Developing regions 80 ... 3616 3626 4807 \n",
"3 Polynesia 902 Developing regions 0 ... 0 0 1 \n",
"4 Southern Europe 901 Developed regions 0 ... 0 0 1 \n",
"\n",
" 2007 2008 2009 2010 2011 2012 2013 \n",
"0 2652 2111 1746 1758 2203 2635 2004 \n",
"1 702 560 716 561 539 620 603 \n",
"2 3623 4005 5393 4752 4325 3774 4331 \n",
"3 0 0 0 0 0 0 0 \n",
"4 1 0 0 0 0 1 1 \n",
"\n",
"[5 rows x 43 columns]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(195, 43)\n"
]
}
],
"source": [
"# print the dimensions of the dataframe\n",
"print(df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Clean up data. We will make some modifications to the original dataset to make it easier to create our visualizations. Refer to *Introduction to Matplotlib and Line Plots* and *Area Plots, Histograms, and Bar Plots* notebooks for a detailed description of this preprocessing."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data dimensions: (195, 39)\n"
]
}
],
"source": [
"# clean up the dataset to remove unnecessary columns (eg. REG) \n",
"df_can.drop(['AREA','REG','DEV','Type','Coverage'], axis=1, inplace=True)\n",
"\n",
"# let's rename the columns so that they make sense\n",
"df_can.rename(columns={'OdName':'Country', 'AreaName':'Continent','RegName':'Region'}, inplace=True)\n",
"\n",
"# for sake of consistency, let's also make all column labels of type string\n",
"df_can.columns = list(map(str, df_can.columns))\n",
"\n",
"# add total column\n",
"df_can['Total'] = df_can.sum(axis=1)\n",
"\n",
"# years that we will be using in this lesson - useful for plotting later on\n",
"years = list(map(str, range(1980, 2014)))\n",
"print ('data dimensions:', df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items of our cleaned dataframe."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Country</th>\n",
" <th>Continent</th>\n",
" <th>Region</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>1981</th>\n",
" <th>1982</th>\n",
" <th>1983</th>\n",
" <th>1984</th>\n",
" <th>1985</th>\n",
" <th>...</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" <th>Total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan</td>\n",
" <td>Asia</td>\n",
" <td>Southern Asia</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>47</td>\n",
" <td>71</td>\n",
" <td>340</td>\n",
" <td>...</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" <td>58639</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Albania</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" <td>15699</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Algeria</td>\n",
" <td>Africa</td>\n",
" <td>Northern Africa</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>67</td>\n",
" <td>71</td>\n",
" <td>69</td>\n",
" <td>63</td>\n",
" <td>44</td>\n",
" <td>...</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" <td>69439</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>American Samoa</td>\n",
" <td>Oceania</td>\n",
" <td>Polynesia</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Andorra</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 39 columns</p>\n",
"</div>"
],
"text/plain": [
" Country Continent Region DevName 1980 1981 \\\n",
"0 Afghanistan Asia Southern Asia Developing regions 16 39 \n",
"1 Albania Europe Southern Europe Developed regions 1 0 \n",
"2 Algeria Africa Northern Africa Developing regions 80 67 \n",
"3 American Samoa Oceania Polynesia Developing regions 0 1 \n",
"4 Andorra Europe Southern Europe Developed regions 0 0 \n",
"\n",
" 1982 1983 1984 1985 ... 2005 2006 2007 2008 2009 2010 2011 \\\n",
"0 39 47 71 340 ... 3436 3009 2652 2111 1746 1758 2203 \n",
"1 0 0 0 0 ... 1223 856 702 560 716 561 539 \n",
"2 71 69 63 44 ... 3626 4807 3623 4005 5393 4752 4325 \n",
"3 0 0 0 0 ... 0 1 0 0 0 0 0 \n",
"4 0 0 0 0 ... 0 1 1 0 0 0 0 \n",
"\n",
" 2012 2013 Total \n",
"0 2635 2004 58639 \n",
"1 620 603 15699 \n",
"2 3774 4331 69439 \n",
"3 0 0 6 \n",
"4 1 1 15 \n",
"\n",
"[5 rows x 39 columns]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"In order to create a `Choropleth` map, we need a GeoJSON file that defines the areas/boundaries of the state, county, or country that we are interested in. In our case, since we are endeavoring to create a world map, we want a GeoJSON that defines the boundaries of all world countries. For your convenience, we will be providing you with this file, so let's go ahead and download it. Let's name it **world_countries.json**."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"GeoJSON file downloaded!\n"
]
}
],
"source": [
"# download countries geojson file\n",
"!wget --quiet https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/world_countries.json -O world_countries.json\n",
" \n",
"print('GeoJSON file downloaded!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we have the GeoJSON file, let's create a world map, centered around **[0, 0]** *latitude* and *longitude* values, with an intial zoom level of 2, and using *Mapbox Bright* style."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"world_geo = r'world_countries.json' # geojson file\n",
"\n",
"# create a plain world map\n",
"world_map = folium.Map(location=[0, 0], zoom_start=2, tiles='Mapbox Bright')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"And now to create a `Choropleth` map, we will use the *choropleth* method with the following main parameters:\n",
"\n",
"1. geo_data, which is the GeoJSON file.\n",
"2. data, which is the dataframe containing the data.\n",
"3. columns, which represents the columns in the dataframe that will be used to create the `Choropleth` map.\n",
"4. key_on, which is the key or variable in the GeoJSON file that contains the name of the variable of interest. To determine that, you will need to open the GeoJSON file using any text editor and note the name of the key or variable that contains the name of the countries, since the countries are our variable of interest. In this case, **name** is the key in the GeoJSON file that contains the name of the countries. Note that this key is case_sensitive, so you need to pass exactly as it exists in the GeoJSON file."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYTFlNmFkODYwNzdmNGE0NGI5MWM5NDdlNTRjYjNjMjYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfYTFlNmFkODYwNzdmNGE0NGI5MWM5NDdlNTRjYjNjMjYiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwX2ExZTZhZDg2MDc3ZjRhNDRiOTFjOTQ3ZTU0Y2IzYzI2ID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwX2ExZTZhZDg2MDc3ZjRhNDRiOTFjOTQ3ZTU0Y2IzYzI2JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFswLDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMWU5YzVhMGQ2ZWE5NDIxZWE2ODg4YzA5MTZkYWNkOTIgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlcy5tYXBib3guY29tL3YzL21hcGJveC53b3JsZC1icmlnaHQve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9hMWU2YWQ4NjA3N2Y0YTQ0YjkxYzk0N2U1NGNiM2MyNik7CiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBnZW9fanNvbl9kYTViNTFjMGQyZTc0Zjk3YWFmMTI2YjNmYmE3M2I3YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNjEuMjEwODE3LCAzNS42NTAwNzJdLCBbNjIuMjMwNjUxLCAzNS4yNzA2NjRdLCBbNjIuOTg0NjYyLCAzNS40MDQwNDFdLCBbNjMuMTkzNTM4LCAzNS44NTcxNjZdLCBbNjMuOTgyODk2LCAzNi4wMDc5NTddLCBbNjQuNTQ2NDc5LCAzNi4zMTIwNzNdLCBbNjQuNzQ2MTA1LCAzNy4xMTE4MThdLCBbNjUuNTg4OTQ4LCAzNy4zMDUyMTddLCBbNjUuNzQ1NjMxLCAzNy42NjExNjRdLCBbNjYuMjE3Mzg1LCAzNy4zOTM3OV0sIFs2Ni41MTg2MDcsIDM3LjM2Mjc4NF0sIFs2Ny4wNzU3ODIsIDM3LjM1NjE0NF0sIFs2Ny44MywgMzcuMTQ0OTk0XSwgWzY4LjEzNTU2MiwgMzcuMDIzMTE1XSwgWzY4Ljg1OTQ0NiwgMzcuMzQ0MzM2XSwgWzY5LjE5NjI3MywgMzcuMTUxMTQ0XSwgWzY5LjUxODc4NSwgMzcuNjA4OTk3XSwgWzcwLjExNjU3OCwgMzcuNTg4MjIzXSwgWzcwLjI3MDU3NCwgMzcuNzM1MTY1XSwgWzcwLjM3NjMwNCwgMzguMTM4Mzk2XSwgWzcwLjgwNjgyMSwgMzguNDg2MjgyXSwgWzcxLjM0ODEzMSwgMzguMjU4OTA1XSwgWzcxLjIzOTQwNCwgMzcuOTUzMjY1XSwgWzcxLjU0MTkxOCwgMzcuOTA1Nzc0XSwgWzcxLjQ0ODY5MywgMzcuMDY1NjQ1XSwgWzcxLjg0NDYzOCwgMzYuNzM4MTcxXSwgWzcyLjE5MzA0MSwgMzYuOTQ4Mjg4XSwgWzcyLjYzNjg5LCAzNy4wNDc1NThdLCBbNzMuMjYwMDU2LCAzNy40OTUyNTddLCBbNzMuOTQ4Njk2LCAzNy40MjE1NjZdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NS4xNTgwMjgsIDM3LjEzMzAzMV0sIFs3NC41NzU4OTMsIDM3LjAyMDg0MV0sIFs3NC4wNjc1NTIsIDM2LjgzNjE3Nl0sIFs3Mi45MjAwMjUsIDM2LjcyMDAwN10sIFs3MS44NDYyOTIsIDM2LjUwOTk0Ml0sIFs3MS4yNjIzNDgsIDM2LjA3NDM4OF0sIFs3MS40OTg3NjgsIDM1LjY1MDU2M10sIFs3MS42MTMwNzYsIDM1LjE1MzIwM10sIFs3MS4xMTUwMTksIDM0LjczMzEyNl0sIFs3MS4xNTY3NzMsIDM0LjM0ODkxMV0sIFs3MC44ODE4MDMsIDMzLjk4ODg1Nl0sIFs2OS45MzA1NDMsIDM0LjAyMDEyXSwgWzcwLjMyMzU5NCwgMzMuMzU4NTMzXSwgWzY5LjY4NzE0NywgMzMuMTA1NDk5XSwgWzY5LjI2MjUyMiwgMzIuNTAxOTQ0XSwgWzY5LjMxNzc2NCwgMzEuOTAxNDEyXSwgWzY4LjkyNjY3NywgMzEuNjIwMTg5XSwgWzY4LjU1NjkzMiwgMzEuNzEzMzFdLCBbNjcuNzkyNjg5LCAzMS41ODI5M10sIFs2Ny42ODMzOTQsIDMxLjMwMzE1NF0sIFs2Ni45Mzg4OTEsIDMxLjMwNDkxMV0sIFs2Ni4zODE0NTgsIDMwLjczODg5OV0sIFs2Ni4zNDY0NzMsIDI5Ljg4Nzk0M10sIFs2NS4wNDY4NjIsIDI5LjQ3MjE4MV0sIFs2NC4zNTA0MTksIDI5LjU2MDAzMV0sIFs2NC4xNDgwMDIsIDI5LjM0MDgxOV0sIFs2My41NTAyNjEsIDI5LjQ2ODMzMV0sIFs2Mi41NDk4NTcsIDI5LjMxODU3Ml0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS43ODEyMjIsIDMwLjczNTg1XSwgWzYxLjY5OTMxNCwgMzEuMzc5NTA2XSwgWzYwLjk0MTk0NSwgMzEuNTQ4MDc1XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuNTM2MDc4LCAzMi45ODEyNjldLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuODAzMTkzLCAzNC40MDQxMDJdLCBbNjEuMjEwODE3LCAzNS42NTAwNzJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFGRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWZnaGFuaXN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzE2LjU3MzE4LCAtNi42MjI2NDVdLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTcuNDcyOTcsIC04LjA2ODU1MV0sIFsxOC4xMzQyMjIsIC03Ljk4NzY3OF0sIFsxOC40NjQxNzYsIC03Ljg0NzAxNF0sIFsxOS4wMTY3NTIsIC03Ljk4ODI0Nl0sIFsxOS4xNjY2MTMsIC03LjczODE4NF0sIFsxOS40MTc1MDIsIC03LjE1NTQyOV0sIFsyMC4wMzc3MjMsIC03LjExNjM2MV0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjYwMTgyMywgLTYuOTM5MzE4XSwgWzIwLjUxNDc0OCwgLTcuMjk5NjA2XSwgWzIxLjcyODExMSwgLTcuMjkwODcyXSwgWzIxLjc0NjQ1NiwgLTcuOTIwMDg1XSwgWzIxLjk0OTEzMSwgLTguMzA1OTAxXSwgWzIxLjgwMTgwMSwgLTguOTA4NzA3XSwgWzIxLjg3NTE4MiwgLTkuNTIzNzA4XSwgWzIyLjIwODc1MywgLTkuODk0Nzk2XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi40MDI3OTgsIC0xMC45OTMwNzVdLCBbMjIuODM3MzQ1LCAtMTEuMDE3NjIyXSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMy45MTIyMTUsIC0xMC45MjY4MjZdLCBbMjQuMDE3ODk0LCAtMTEuMjM3Mjk4XSwgWzIzLjkwNDE1NCwgLTExLjcyMjI4Ml0sIFsyNC4wNzk5MDUsIC0xMi4xOTEyOTddLCBbMjMuOTMwOTIyLCAtMTIuNTY1ODQ4XSwgWzI0LjAxNjEzNywgLTEyLjkxMTA0Nl0sIFsyMS45MzM4ODYsIC0xMi44OTg0MzddLCBbMjEuODg3ODQzLCAtMTYuMDgwMzFdLCBbMjIuNTYyNDc4LCAtMTYuODk4NDUxXSwgWzIzLjIxNTA0OCwgLTE3LjUyMzExNl0sIFsyMS4zNzcxNzYsIC0xNy45MzA2MzZdLCBbMTguOTU2MTg3LCAtMTcuNzg5MDk1XSwgWzE4LjI2MzMwOSwgLTE3LjMwOTk1MV0sIFsxNC4yMDk3MDcsIC0xNy4zNTMxMDFdLCBbMTQuMDU4NTAxLCAtMTcuNDIzMzgxXSwgWzEzLjQ2MjM2MiwgLTE2Ljk3MTIxMl0sIFsxMi44MTQwODEsIC0xNi45NDEzNDNdLCBbMTIuMjE1NDYxLCAtMTcuMTExNjY4XSwgWzExLjczNDE5OSwgLTE3LjMwMTg4OV0sIFsxMS42NDAwOTYsIC0xNi42NzMxNDJdLCBbMTEuNzc4NTM3LCAtMTUuNzkzODE2XSwgWzEyLjEyMzU4MSwgLTE0Ljg3ODMxNl0sIFsxMi4xNzU2MTksIC0xNC40NDkxNDRdLCBbMTIuNTAwMDk1LCAtMTMuNTQ3N10sIFsxMi43Mzg0NzksIC0xMy4xMzc5MDZdLCBbMTMuMzEyOTE0LCAtMTIuNDgzNjNdLCBbMTMuNjMzNzIxLCAtMTIuMDM4NjQ1XSwgWzEzLjczODcyOCwgLTExLjI5Nzg2M10sIFsxMy42ODYzNzksIC0xMC43MzEwNzZdLCBbMTMuMzg3MzI4LCAtMTAuMzczNTc4XSwgWzEzLjEyMDk4OCwgLTkuNzY2ODk3XSwgWzEyLjg3NTM3LCAtOS4xNjY5MzRdLCBbMTIuOTI5MDYxLCAtOC45NTkwOTFdLCBbMTMuMjM2NDMzLCAtOC41NjI2MjldLCBbMTIuOTMzMDQsIC03LjU5NjUzOV0sIFsxMi43MjgyOTgsIC02LjkyNzEyMl0sIFsxMi4yMjczNDcsIC02LjI5NDQ0OF0sIFsxMi4zMjI0MzIsIC02LjEwMDA5Ml0sIFsxMi43MzUxNzEsIC01Ljk2NTY4Ml0sIFsxMy4wMjQ4NjksIC01Ljk4NDM4OV0sIFsxMy4zNzU1OTcsIC01Ljg2NDI0MV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XV1dLCBbW1sxMi40MzY2ODgsIC01LjY4NDMwNF0sIFsxMi4xODIzMzcsIC01Ljc4OTkzMV0sIFsxMS45MTQ5NjMsIC01LjAzNzk4N10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzEyLjYyMDc2LCAtNC40MzgwMjNdLCBbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjMxNjEyLCAtNC45OTEyNzFdLCBbMTIuNDY4MDA0LCAtNS4yNDgzNjJdLCBbMTIuNDM2Njg4LCAtNS42ODQzMDRdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFHTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQW5nb2xhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syMC41OTAyNDcsIDQxLjg1NTQwNF0sIFsyMC40NjMxNzUsIDQxLjUxNTA4OV0sIFsyMC42MDUxODIsIDQxLjA4NjIyNl0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIwLjk5OTk5LCA0MC41ODAwMDRdLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMTkuOTgsIDM5LjY5NDk5M10sIFsxOS45NjAwMDIsIDM5LjkxNTAwNl0sIFsxOS40MDYwODIsIDQwLjI1MDc3M10sIFsxOS4zMTkwNTksIDQwLjcyNzIzXSwgWzE5LjQwMzU1LCA0MS40MDk1NjZdLCBbMTkuNTQwMDI3LCA0MS43MTk5ODZdLCBbMTkuMzcxNzY5LCA0MS44Nzc1NDhdLCBbMTkuMzA0NDg2LCA0Mi4xOTU3NDVdLCBbMTkuNzM4MDUxLCA0Mi42ODgyNDddLCBbMTkuODAxNjEzLCA0Mi41MDAwOTNdLCBbMjAuMDcwNywgNDIuNTg4NjNdLCBbMjAuMjgzNzU1LCA0Mi4zMjAyNl0sIFsyMC41MjI5NSwgNDIuMjE3ODddLCBbMjAuNTkwMjQ3LCA0MS44NTU0MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFMQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWxiYW5pYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNTEuNTc5NTE5LCAyNC4yNDU0OTddLCBbNTEuNzU3NDQxLCAyNC4yOTQwNzNdLCBbNTEuNzk0Mzg5LCAyNC4wMTk4MjZdLCBbNTIuNTc3MDgxLCAyNC4xNzc0MzldLCBbNTMuNDA0MDA3LCAyNC4xNTEzMTddLCBbNTQuMDA4MDAxLCAyNC4xMjE3NThdLCBbNTQuNjkzMDI0LCAyNC43OTc4OTJdLCBbNTUuNDM5MDI1LCAyNS40MzkxNDVdLCBbNTYuMDcwODIxLCAyNi4wNTU0NjRdLCBbNTYuMjYxMDQyLCAyNS43MTQ2MDZdLCBbNTYuMzk2ODQ3LCAyNC45MjQ3MzJdLCBbNTUuODg2MjMzLCAyNC45MjA4MzFdLCBbNTUuODA0MTE5LCAyNC4yNjk2MDRdLCBbNTUuOTgxMjE0LCAyNC4xMzA1NDNdLCBbNTUuNTI4NjMyLCAyMy45MzM2MDRdLCBbNTUuNTI1ODQxLCAyMy41MjQ4NjldLCBbNTUuMjM0NDg5LCAyMy4xMTA5OTNdLCBbNTUuMjA4MzQxLCAyMi43MDgzM10sIFs1NS4wMDY4MDMsIDIyLjQ5Njk0OF0sIFs1Mi4wMDA3MzMsIDIzLjAwMTE1NF0sIFs1MS42MTc3MDgsIDI0LjAxNDIxOV0sIFs1MS41Nzk1MTksIDI0LjI0NTQ5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQVJFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy02NS41LCAtNTUuMl0sIFstNjYuNDUsIC01NS4yNV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjguNjMzMzUsIC01NC44Njk1XSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XSwgWy02OC4yNSwgLTUzLjFdLCBbLTY3Ljc1LCAtNTMuODVdLCBbLTY2LjQ1LCAtNTQuNDVdLCBbLTY1LjA1LCAtNTQuN10sIFstNjUuNSwgLTU1LjJdXV0sIFtbWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY0LjM3NzAyMSwgLTIyLjc5ODA5MV0sIFstNjMuOTg2ODM4LCAtMjEuOTkzNjQ0XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYyLjY4NTA1NywgLTIyLjI0OTAyOV0sIFstNjAuODQ2NTY1LCAtMjMuODgwNzEzXSwgWy02MC4wMjg5NjYsIC0yNC4wMzI3OTZdLCBbLTU4LjgwNzEyOCwgLTI0Ljc3MTQ1OV0sIFstNTcuNzc3MjE3LCAtMjUuMTYyMzRdLCBbLTU3LjYzMzY2LCAtMjUuNjAzNjU3XSwgWy01OC42MTgxNzQsIC0yNy4xMjM3MTldLCBbLTU3LjYwOTc2LCAtMjcuMzk1ODk5XSwgWy01Ni40ODY3MDIsIC0yNy41NDg0OTldLCBbLTU1LjY5NTg0NiwgLTI3LjM4NzgzN10sIFstNTQuNzg4Nzk1LCAtMjYuNjIxNzg2XSwgWy01NC42MjUyOTEsIC0yNS43MzkyNTVdLCBbLTU0LjEzMDA1LCAtMjUuNTQ3NjM5XSwgWy01My42MjgzNDksIC0yNi4xMjQ4NjVdLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTQuNDkwNzI1LCAtMjcuNDc0NzU3XSwgWy01NS4xNjIyODYsIC0yNy44ODE5MTVdLCBbLTU2LjI5MDksIC0yOC44NTI3NjFdLCBbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTcuODc0OTM3LCAtMzEuMDE2NTU2XSwgWy01OC4xNDI0NCwgLTMyLjA0NDUwNF0sIFstNTguMTMyNjQ4LCAtMzMuMDQwNTY3XSwgWy01OC4zNDk2MTEsIC0zMy4yNjMxODldLCBbLTU4LjQyNzA3NCwgLTMzLjkwOTQ1NF0sIFstNTguNDk1NDQyLCAtMzQuNDMxNDldLCBbLTU3LjIyNTgzLCAtMzUuMjg4MDI3XSwgWy01Ny4zNjIzNTksIC0zNS45NzczOV0sIFstNTYuNzM3NDg3LCAtMzYuNDEzMTI2XSwgWy01Ni43ODgyODUsIC0zNi45MDE1NzJdLCBbLTU3Ljc0OTE1NywgLTM4LjE4Mzg3MV0sIFstNTkuMjMxODU3LCAtMzguNzIwMjJdLCBbLTYxLjIzNzQ0NSwgLTM4LjkyODQyNV0sIFstNjIuMzM1OTU3LCAtMzguODI3NzA3XSwgWy02Mi4xMjU3NjMsIC0zOS40MjQxMDVdLCBbLTYyLjMzMDUzMSwgLTQwLjE3MjU4Nl0sIFstNjIuMTQ1OTk0LCAtNDAuNjc2ODk3XSwgWy02Mi43NDU4MDMsIC00MS4wMjg3NjFdLCBbLTYzLjc3MDQ5NSwgLTQxLjE2Njc4OV0sIFstNjQuNzMyMDksIC00MC44MDI2NzddLCBbLTY1LjExODAzNSwgLTQxLjA2NDMxNV0sIFstNjQuOTc4NTYxLCAtNDIuMDU4MDAxXSwgWy02NC4zMDM0MDgsIC00Mi4zNTkwMTZdLCBbLTYzLjc1NTk0OCwgLTQyLjA0MzY4N10sIFstNjMuNDU4MDU5LCAtNDIuNTYzMTM4XSwgWy02NC4zNzg4MDQsIC00Mi44NzM1NThdLCBbLTY1LjE4MTgwNCwgLTQzLjQ5NTM4MV0sIFstNjUuMzI4ODIzLCAtNDQuNTAxMzY2XSwgWy02NS41NjUyNjksIC00NS4wMzY3ODZdLCBbLTY2LjUwOTk2NiwgLTQ1LjAzOTYyOF0sIFstNjcuMjkzNzk0LCAtNDUuNTUxODk2XSwgWy02Ny41ODA1NDYsIC00Ni4zMDE3NzNdLCBbLTY2LjU5NzA2NiwgLTQ3LjAzMzkyNV0sIFstNjUuNjQxMDI3LCAtNDcuMjM2MTM1XSwgWy02NS45ODUwODgsIC00OC4xMzMyODldLCBbLTY3LjE2NjE3OSwgLTQ4LjY5NzMzN10sIFstNjcuODE2MDg4LCAtNDkuODY5NjY5XSwgWy02OC43Mjg3NDUsIC01MC4yNjQyMThdLCBbLTY5LjEzODUzOSwgLTUwLjczMjUxXSwgWy02OC44MTU1NjEsIC01MS43NzExMDRdLCBbLTY4LjE0OTk5NSwgLTUyLjM0OTk4M10sIFstNjguNTcxNTQ1LCAtNTIuMjk5NDQ0XSwgWy02OS40OTgzNjIsIC01Mi4xNDI3NjFdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNzIuMzI5NDA0LCAtNTEuNDI1OTU2XSwgWy03Mi4zMDk5NzQsIC01MC42NzcwMV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzMuNDE1NDM2LCAtNDkuMzE4NDM2XSwgWy03Mi42NDgyNDcsIC00OC44Nzg2MThdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNDQ3MzU1LCAtNDcuNzM4NTMzXSwgWy03MS45MTcyNTgsIC00Ni44ODQ4MzhdLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuNjU5MzE2LCAtNDQuOTczNjg5XSwgWy03MS4yMjI3NzksIC00NC43ODQyNDNdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuNzkzNjIzLCAtNDQuMjA3MTcyXSwgWy03MS40NjQwNTYsIC00My43ODc2MTFdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzIuMTQ4ODk4LCAtNDIuMjU0ODg4XSwgWy03MS43NDY4MDQsIC00Mi4wNTEzODZdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNjgwNzYxLCAtMzkuODA4MTY0XSwgWy03MS40MTM1MTcsIC0zOC45MTYwMjJdLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuMTE4NjI1LCAtMzcuNTc2ODI3XSwgWy03MS4xMjE4ODEsIC0zNi42NTgxMjRdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzAuMzg4MDQ5LCAtMzUuMTY5Njg4XSwgWy02OS44MTczMDksIC0zNC4xOTM1NzFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTcwLjUzNTA2OSwgLTMxLjM2NTAxXSwgWy02OS45MTkwMDgsIC0zMC4zMzYzMzldLCBbLTcwLjAxMzU1LCAtMjkuMzY3OTIzXSwgWy02OS42NTYxMywgLTI4LjQ1OTE0MV0sIFstNjkuMDAxMjM1LCAtMjcuNTIxMjE0XSwgWy02OC4yOTU1NDIsIC0yNi44OTkzNF0sIFstNjguNTk0OCwgLTI2LjUwNjkwOV0sIFstNjguMzg2MDAxLCAtMjYuMTg1MDE2XSwgWy02OC40MTc2NTMsIC0yNC41MTg1NTVdLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjYuOTg1MjM0LCAtMjIuOTg2MzQ5XSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFSRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXJnZW50aW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0My41ODI3NDYsIDQxLjA5MjE0M10sIFs0NC45NzI0OCwgNDEuMjQ4MTI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ1LjU2MDM1MSwgNDAuODEyMjldLCBbNDUuMzU5MTc1LCA0MC41NjE1MDRdLCBbNDUuODkxOTA3LCA0MC4yMTg0NzZdLCBbNDUuNjEwMDEyLCAzOS44OTk5OTRdLCBbNDYuMDM0NTM0LCAzOS42MjgwMjFdLCBbNDYuNDgzNDk5LCAzOS40NjQxNTVdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ0LjQwMDAwOSwgNDAuMDA1XSwgWzQzLjY1NjQzNiwgNDAuMjUzNTY0XSwgWzQzLjc1MjY1OCwgNDAuNzQwMjAxXSwgWzQzLjU4Mjc0NiwgNDEuMDkyMTQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBUk0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFybWVuaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNTkuNTcyMDk1LCAtODAuMDQwMTc5XSwgWy01OS44NjU4NDksIC04MC41NDk2NTddLCBbLTYwLjE1OTY1NiwgLTgxLjAwMDMyN10sIFstNjIuMjU1MzkzLCAtODAuODYzMTc4XSwgWy02NC40ODgxMjUsIC04MC45MjE5MzRdLCBbLTY1Ljc0MTY2NiwgLTgwLjU4ODgyN10sIFstNjUuNzQxNjY2LCAtODAuNTQ5NjU3XSwgWy02Ni4yOTAwMzEsIC04MC4yNTU3NzNdLCBbLTY0LjAzNzY4OCwgLTgwLjI5NDk0NF0sIFstNjEuODgzMjQ2LCAtODAuMzkyODddLCBbLTYxLjEzODk3NiwgLTc5Ljk4MTM3MV0sIFstNjAuNjEwMTE5LCAtNzkuNjI4Njc5XSwgWy01OS41NzIwOTUsIC04MC4wNDAxNzldXV0sIFtbWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XSwgWy0xNjEuMTI3NjAxLCAtNzkuNjM0MjA5XSwgWy0xNjIuNDM5ODQ3LCAtNzkuMjgxNDY1XSwgWy0xNjMuMDI3NDA4LCAtNzguOTI4Nzc0XSwgWy0xNjMuMDY2NjA0LCAtNzguODY5OTY2XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuMTA1ODAxLCAtNzguMjIzMzM4XSwgWy0xNjEuMjQ1MTEzLCAtNzguMzgwMTc2XSwgWy0xNjAuMjQ2MjA4LCAtNzguNjkzNjQ1XSwgWy0xNTkuNDgyNDA1LCAtNzkuMDQ2MzM4XSwgWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XV1dLCBbW1stNDUuMTU0NzU4LCAtNzguMDQ3MDddLCBbLTQzLjkyMDgyOCwgLTc4LjQ3ODEwM10sIFstNDMuNDg5OTUsIC03OS4wODU1Nl0sIFstNDMuMzcyNDM4LCAtNzkuNTE2NjQ1XSwgWy00My4zMzMyNjcsIC04MC4wMjYxMjNdLCBbLTQ0Ljg4MDUzNywgLTgwLjMzOTY0NF0sIFstNDYuNTA2MTc0LCAtODAuNTk0MzU3XSwgWy00OC4zODY0MjEsIC04MC44Mjk0ODVdLCBbLTUwLjQ4MjEwNywgLTgxLjAyNTQ0Ml0sIFstNTIuODUxOTg4LCAtODAuOTY2Njg1XSwgWy01NC4xNjQyNTksIC04MC42MzM1MjhdLCBbLTUzLjk4Nzk5MSwgLTgwLjIyMjAyOF0sIFstNTEuODUzMTM0LCAtNzkuOTQ3NzNdLCBbLTUwLjk5MTMyNiwgLTc5LjYxNDYyM10sIFstNTAuMzY0NTk1LCAtNzkuMTgzNDg3XSwgWy00OS45MTQxMzEsIC03OC44MTEyMDldLCBbLTQ5LjMwNjk1OSwgLTc4LjQ1ODU2OV0sIFstNDguNjYwNjE2LCAtNzguMDQ3MDE4XSwgWy00OC42NjA2MTYsIC03OC4wNDcwMTldLCBbLTQ4LjE1MTM5NiwgLTc4LjA0NzA3XSwgWy00Ni42NjI4NTcsIC03Ny44MzE0NzZdLCBbLTQ1LjE1NDc1OCwgLTc4LjA0NzA3XV1dLCBbW1stMTIxLjIxMTUxMSwgLTczLjUwMDk5XSwgWy0xMTkuOTE4ODUxLCAtNzMuNjU3NzI1XSwgWy0xMTguNzI0MTQzLCAtNzMuNDgxMzUzXSwgWy0xMTkuMjkyMTE5LCAtNzMuODM0MDk3XSwgWy0xMjAuMjMyMjE3LCAtNzQuMDg4ODFdLCBbLTEyMS42MjI4MywgLTc0LjAxMDQ2OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3N10sIFstMTIyLjQwNjI0NSwgLTczLjMyNDYxOV0sIFstMTIxLjIxMTUxMSwgLTczLjUwMDk5XV1dLCBbW1stMTI1LjU1OTU2NiwgLTczLjQ4MTM1M10sIFstMTI0LjAzMTg4MiwgLTczLjg3MzI2OF0sIFstMTI0LjYxOTQ2OSwgLTczLjgzNDA5N10sIFstMTI1LjkxMjE4MSwgLTczLjczNjExOF0sIFstMTI3LjI4MzEzLCAtNzMuNDYxNzY5XSwgWy0xMjcuMjgzMTMsIC03My40NjE3NjhdLCBbLTEyNi41NTg0NzIsIC03My4yNDYyMjZdLCBbLTEyNS41NTk1NjYsIC03My40ODEzNTNdXV0sIFtbWy05OC45ODE1NSwgLTcxLjkzMzMzNF0sIFstOTcuODg0NzQzLCAtNzIuMDcwNTM1XSwgWy05Ni43ODc5MzcsIC03MS45NTI5NzFdLCBbLTk2LjIwMDM1LCAtNzIuNTIxMjA1XSwgWy05Ni45ODM3NjUsIC03Mi40NDI4NjRdLCBbLTk4LjE5ODA4MywgLTcyLjQ4MjAzNV0sIFstOTkuNDMyMDEzLCAtNzIuNDQyODY0XSwgWy0xMDAuNzgzNDU1LCAtNzIuNTAxNjJdLCBbLTEwMS44MDE4NjgsIC03Mi4zMDU2NjNdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMS43MDM5NjcsIC03MS43MTc3OTJdLCBbLTEwMC40MzA5MTksIC03MS44NTQ5OTNdLCBbLTk4Ljk4MTU1LCAtNzEuOTMzMzM0XV1dLCBbW1stNjguNDUxMzQ2LCAtNzAuOTU1ODIzXSwgWy02OC4zMzM4MzQsIC03MS40MDY0OTNdLCBbLTY4LjUxMDEyOCwgLTcxLjc5ODQwN10sIFstNjguNzg0Mjk3LCAtNzIuMTcwNzM2XSwgWy02OS45NTk0NzEsIC03Mi4zMDc4ODVdLCBbLTcxLjA3NTg4OSwgLTcyLjUwMzg0Ml0sIFstNzIuMzg4MTM0LCAtNzIuNDg0MjU3XSwgWy03MS44OTg1LCAtNzIuMDkyMzQzXSwgWy03My4wNzM2MjIsIC03Mi4yMjk0OTJdLCBbLTc0LjE5MDA0LCAtNzIuMzY2NjkzXSwgWy03NC45NTM4OTUsIC03Mi4wNzI3NTddLCBbLTc1LjAxMjYyNSwgLTcxLjY2MTI1OF0sIFstNzMuOTE1ODE5LCAtNzEuMjY5MzQ1XSwgWy03My45MTU4MTksIC03MS4yNjkzNDRdLCBbLTczLjIzMDMzMSwgLTcxLjE1MTc4XSwgWy03Mi4wNzQ3MTcsIC03MS4xOTA5NTFdLCBbLTcxLjc4MDk2MiwgLTcwLjY4MTQ3M10sIFstNzEuNzIyMTgsIC03MC4zMDkxOTZdLCBbLTcxLjc0MTc5MSwgLTY5LjUwNTc4Ml0sIFstNzEuMTczODE1LCAtNjkuMDM1NDc1XSwgWy03MC4yNTMyNTIsIC02OC44Nzg3NF0sIFstNjkuNzI0NDQ3LCAtNjkuMjUxMDE3XSwgWy02OS40ODk0MjIsIC02OS42MjMzNDZdLCBbLTY5LjA1ODUxOCwgLTcwLjA3NDAxNl0sIFstNjguNzI1NTQxLCAtNzAuNTA1MTUzXSwgWy02OC40NTEzNDYsIC03MC45NTU4MjNdXV0sIFtbWy01OC42MTQxNDMsIC02NC4xNTI0NjddLCBbLTU5LjA0NTA3MywgLTY0LjM2ODAxXSwgWy01OS43ODkzNDIsIC02NC4yMTEyMjNdLCBbLTYwLjYxMTkyOCwgLTY0LjMwOTIwMl0sIFstNjEuMjk3NDE2LCAtNjQuNTQ0MzNdLCBbLTYyLjAyMjEsIC02NC43OTkwOTRdLCBbLTYyLjUxMTc2LCAtNjUuMDkzMDNdLCBbLTYyLjY0ODg1OCwgLTY1LjQ4NDk0Ml0sIFstNjIuNTkwMTI4LCAtNjUuODU3MjE5XSwgWy02Mi4xMjAwNzksIC02Ni4xOTAzMjZdLCBbLTYyLjgwNTU2NywgLTY2LjQyNTUwNV0sIFstNjMuNzQ1NjksIC02Ni41MDM4NDddLCBbLTY0LjI5NDEwNiwgLTY2LjgzNzAwNF0sIFstNjQuODgxNjkzLCAtNjcuMTUwNDc0XSwgWy02NS41MDg0MjUsIC02Ny41ODE2MV0sIFstNjUuNjY1MDgyLCAtNjcuOTUzODg3XSwgWy02NS4zMTI1NDUsIC02OC4zNjUzMzVdLCBbLTY0Ljc4MzcxNSwgLTY4LjY3ODkwOF0sIFstNjMuOTYxMTAzLCAtNjguOTEzOTg0XSwgWy02My4xOTczLCAtNjkuMjI3NTU2XSwgWy02Mi43ODU5NTUsIC02OS42MTk0MTldLCBbLTYyLjU3MDUxNiwgLTY5Ljk5MTc0N10sIFstNjIuMjc2NzM2LCAtNzAuMzgzNjYxXSwgWy02MS44MDY2NjEsIC03MC43MTY3NjhdLCBbLTYxLjUxMjkwNiwgLTcxLjA4OTA0NV0sIFstNjEuMzc1ODA5LCAtNzIuMDEwMDc0XSwgWy02MS4wODE5NzcsIC03Mi4zODIzNTFdLCBbLTYxLjAwMzY2MSwgLTcyLjc3NDI2NV0sIFstNjAuNjkwMjY5LCAtNzMuMTY2MTc5XSwgWy02MC44MjczNjcsIC03My42OTUyNDJdLCBbLTYxLjM3NTgwOSwgLTc0LjEwNjc0Ml0sIFstNjEuOTYzMzcsIC03NC40Mzk4NDhdLCBbLTYzLjI5NTIwMSwgLTc0LjU3Njk5N10sIFstNjMuNzQ1NjksIC03NC45Mjk3NF0sIFstNjQuMzUyODM2LCAtNzUuMjYyODQ3XSwgWy02NS44NjA5ODcsIC03NS42MzUxMjRdLCBbLTY3LjE5MjgxOCwgLTc1Ljc5MTkxXSwgWy02OC40NDYyODIsIC03Ni4wMDc0NTJdLCBbLTY5Ljc5NzcyNCwgLTc2LjIyMjk5NV0sIFstNzAuNjAwNzI0LCAtNzYuNjM0NDk0XSwgWy03Mi4yMDY3NzYsIC03Ni42NzM2NjVdLCBbLTczLjk2OTUzNiwgLTc2LjYzNDQ5NF0sIFstNzUuNTU1OTc3LCAtNzYuNzEyODg3XSwgWy03Ny4yNDAzNywgLTc2LjcxMjg4N10sIFstNzYuOTI2OTc5LCAtNzcuMTA0ODAyXSwgWy03NS4zOTkyOTQsIC03Ny4yODEwN10sIFstNzQuMjgyODc2LCAtNzcuNTU1NDJdLCBbLTczLjY1NjExOSwgLTc3LjkwODExMl0sIFstNzQuNzcyNTM2LCAtNzguMjIxNjMzXSwgWy03Ni40OTYxLCAtNzguMTIzNjU0XSwgWy03Ny45MjU4NTgsIC03OC4zNzg0MTldLCBbLTc3Ljk4NDY2NiwgLTc4Ljc4OTkxOF0sIFstNzguMDIzNzg1LCAtNzkuMTgxODMzXSwgWy03Ni44NDg2MzcsIC03OS41MTQ5MzldLCBbLTc2LjYzMzIyNCwgLTc5Ljg4NzIxNl0sIFstNzUuMzYwMDk3LCAtODAuMjU5NTQ1XSwgWy03My4yNDQ4NTIsIC04MC40MTYzMzFdLCBbLTcxLjQ0Mjk0NiwgLTgwLjY5MDYzXSwgWy03MC4wMTMxNjMsIC04MS4wMDQxNTFdLCBbLTY4LjE5MTY0NiwgLTgxLjMxNzY3Ml0sIFstNjUuNzA0Mjc5LCAtODEuNDc0NDU4XSwgWy02My4yNTYwMywgLTgxLjc0ODc1N10sIFstNjEuNTUyMDI2LCAtODIuMDQyNjkyXSwgWy01OS42OTE0MTYsIC04Mi4zNzU4NV0sIFstNTguNzEyMTIxLCAtODIuODQ2MTA2XSwgWy01OC4yMjI0ODcsIC04My4yMTg0MzRdLCBbLTU3LjAwODExNywgLTgyLjg2NTY5MV0sIFstNTUuMzYyODk0LCAtODIuNTcxNzU1XSwgWy01My42MTk3NzEsIC04Mi4yNTgyMzVdLCBbLTUxLjU0MzY0NCwgLTgyLjAwMzUyMV0sIFstNDkuNzYxMzUsIC04MS43MjkxNzFdLCBbLTQ3LjI3MzkzMSwgLTgxLjcwOTU4Nl0sIFstNDQuODI1NzA4LCAtODEuODQ2NzM1XSwgWy00Mi44MDgzNjMsIC04Mi4wODE5MTVdLCBbLTQyLjE2MjAyLCAtODEuNjUwODNdLCBbLTQwLjc3MTQzMywgLTgxLjM1Njg5NF0sIFstMzguMjQ0ODE4LCAtODEuMzM3MzA5XSwgWy0zNi4yNjY2NywgLTgxLjEyMTcxNV0sIFstMzQuMzg2Mzk3LCAtODAuOTA2MTcyXSwgWy0zMi4zMTAyOTYsIC04MC43NjkwMjNdLCBbLTMwLjA5NzA5OCwgLTgwLjU5MjY1MV0sIFstMjguNTQ5ODAyLCAtODAuMzM3OTM4XSwgWy0yOS4yNTQ5MDEsIC03OS45ODUxOTVdLCBbLTI5LjY4NTgwNSwgLTc5LjYzMjUwM10sIFstMjkuNjg1ODA1LCAtNzkuMjYwMjI2XSwgWy0zMS42MjQ4MDgsIC03OS4yOTkzOTddLCBbLTMzLjY4MTMyNCwgLTc5LjQ1NjEzMl0sIFstMzUuNjM5OTEyLCAtNzkuNDU2MTMyXSwgWy0zNS45MTQxMDcsIC03OS4wODM4NTVdLCBbLTM1Ljc3NzAxLCAtNzguMzM5MjQ4XSwgWy0zNS4zMjY1NDYsIC03OC4xMjM2NTRdLCBbLTMzLjg5Njc2MywgLTc3Ljg4ODUyNl0sIFstMzIuMjEyMzY5LCAtNzcuNjUzNDVdLCBbLTMwLjk5ODA1MSwgLTc3LjM1OTUxNV0sIFstMjkuNzgzNzMyLCAtNzcuMDY1NTc5XSwgWy0yOC44ODI3NzksIC03Ni42NzM2NjVdLCBbLTI3LjUxMTc1MiwgLTc2LjQ5NzM0NV0sIFstMjYuMTYwMzM2LCAtNzYuMzYwMTQ0XSwgWy0yNS40NzQ4MjIsIC03Ni4yODE4MDNdLCBbLTIzLjkyNzU1MiwgLTc2LjI0MjU4XSwgWy0yMi40NTg1OTgsIC03Ni4xMDU0MzFdLCBbLTIxLjIyNDY5NCwgLTc1LjkwOTQ3NF0sIFstMjAuMDEwMzc1LCAtNzUuNjc0MzQ2XSwgWy0xOC45MTM1NDMsIC03NS40MzkyMThdLCBbLTE3LjUyMjk4MiwgLTc1LjEyNTY5OF0sIFstMTYuNjQxNTg5LCAtNzQuNzkyNTRdLCBbLTE1LjcwMTQ5MSwgLTc0LjQ5ODYwNF0sIFstMTUuNDA3NzEsIC03NC4xMDY3NDJdLCBbLTE2LjQ2NTMyLCAtNzMuODcxNjE0XSwgWy0xNi4xMTI3ODQsIC03My40NjAxMTRdLCBbLTE1LjQ0Njg1NSwgLTczLjE0NjU0Ml0sIFstMTQuNDA4ODA1LCAtNzIuOTUwNTg1XSwgWy0xMy4zMTE5NzMsIC03Mi43MTU0NTddLCBbLTEyLjI5MzUwOCwgLTcyLjQwMTkzNl0sIFstMTEuNTEwMDY3LCAtNzIuMDEwMDc0XSwgWy0xMS4wMjA0MzMsIC03MS41Mzk3NjddLCBbLTEwLjI5NTc3NCwgLTcxLjI2NTQxNl0sIFstOS4xMDEwMTUsIC03MS4zMjQyMjRdLCBbLTguNjExMzgxLCAtNzEuNjU3MzNdLCBbLTcuNDE2NjIyLCAtNzEuNjk2NTAxXSwgWy03LjM3NzQ1MSwgLTcxLjMyNDIyNF0sIFstNi44NjgyMzIsIC03MC45MzIzMV0sIFstNS43OTA5ODUsIC03MS4wMzAyODldLCBbLTUuNTM2Mzc1LCAtNzEuNDAyNjE3XSwgWy00LjM0MTY2NywgLTcxLjQ2MTM3M10sIFstMy4wNDg5ODEsIC03MS4yODUwNTNdLCBbLTEuNzk1NDkyLCAtNzEuMTY3NDM4XSwgWy0wLjY1OTQ4OSwgLTcxLjIyNjI0Nl0sIFstMC4yMjg2MzcsIC03MS42Mzc3NDVdLCBbMC44NjgxOTUsIC03MS4zMDQ2MzldLCBbMS44ODY2ODYsIC03MS4xMjgyNjddLCBbMy4wMjI2MzgsIC03MC45OTExMThdLCBbNC4xMzkwNTUsIC03MC44NTM5MTddLCBbNS4xNTc1NDYsIC03MC42MTg3ODldLCBbNi4yNzM5MTIsIC03MC40NjIwNTVdLCBbNy4xMzU3MiwgLTcwLjI0NjUxMl0sIFs3Ljc0Mjg2NiwgLTY5Ljg5Mzc2OV0sIFs4LjQ4NzExLCAtNzAuMTQ4NTM0XSwgWzkuNTI1MTM1LCAtNzAuMDExMzMzXSwgWzEwLjI0OTg0NSwgLTcwLjQ4MTY0XSwgWzEwLjgxNzgyMSwgLTcwLjgzNDMzMl0sIFsxMS45NTM4MjQsIC03MC42MzgzNzVdLCBbMTIuNDA0Mjg3LCAtNzAuMjQ2NTEyXSwgWzEzLjQyMjc3OCwgLTY5Ljk3MjE2Ml0sIFsxNC43MzQ5OTgsIC03MC4wMzA5MThdLCBbMTUuMTI2NzU3LCAtNzAuNDAzMjQ3XSwgWzE1Ljk0OTM0MiwgLTcwLjAzMDkxOF0sIFsxNy4wMjY1ODksIC02OS45MTMzNTRdLCBbMTguMjAxNzExLCAtNjkuODc0MTgzXSwgWzE5LjI1OTM3MywgLTY5Ljg5Mzc2OV0sIFsyMC4zNzU3MzksIC03MC4wMTEzMzNdLCBbMjEuNDUyOTg1LCAtNzAuMDcwMTRdLCBbMjEuOTIzMDM0LCAtNzAuNDAzMjQ3XSwgWzIyLjU2OTQwMywgLTcwLjY5NzE4Ml0sIFsyMy42NjYxODQsIC03MC41MjA4MTFdLCBbMjQuODQxMzU3LCAtNzAuNDgxNjRdLCBbMjUuOTc3MzA5LCAtNzAuNDgxNjRdLCBbMjcuMDkzNzI2LCAtNzAuNDYyMDU1XSwgWzI4LjA5MjU4LCAtNzAuMzI0ODU0XSwgWzI5LjE1MDI0MiwgLTcwLjIwNzI5XSwgWzMwLjAzMTU4MywgLTY5LjkzMjk0XSwgWzMwLjk3MTczMywgLTY5Ljc1NjYyXSwgWzMxLjk5MDE3MiwgLTY5LjY1ODY0MV0sIFszMi43NTQwNTMsIC02OS4zODQyOTFdLCBbMzMuMzAyNDQzLCAtNjguODM1NjQyXSwgWzMzLjg3MDQxOSwgLTY4LjUwMjU4OF0sIFszNC45MDg0OTUsIC02OC42NTkyNzFdLCBbMzUuMzAwMjAyLCAtNjkuMDEyMDE0XSwgWzM2LjE2MjAxLCAtNjkuMjQ3MTQyXSwgWzM3LjIwMDAzNSwgLTY5LjE2ODc0OF0sIFszNy45MDUxMDgsIC02OS41MjE0NF0sIFszOC42NDk0MDQsIC02OS43NzYyMDVdLCBbMzkuNjY3ODk0LCAtNjkuNTQxMDc3XSwgWzQwLjAyMDQzMSwgLTY5LjEwOTk0MV0sIFs0MC45MjEzNTgsIC02OC45MzM2MjFdLCBbNDEuOTU5NDM0LCAtNjguNjAwNTE0XSwgWzQyLjkzODcwMiwgLTY4LjQ2MzMxM10sIFs0NC4xMTM4NzYsIC02OC4yNjc0MDhdLCBbNDQuODk3MjkxLCAtNjguMDUxODY2XSwgWzQ1LjcxOTkyOCwgLTY3LjgxNjczOF0sIFs0Ni41MDMzNDMsIC02Ny42MDExOTZdLCBbNDcuNDQzNDQsIC02Ny43MTg3NTldLCBbNDguMzQ0NDE5LCAtNjcuMzY2MDY4XSwgWzQ4Ljk5MDczNiwgLTY3LjA5MTcxOF0sIFs0OS45MzA4ODUsIC02Ny4xMTEzMDNdLCBbNTAuNzUzNDcxLCAtNjYuODc2MTc1XSwgWzUwLjk0OTMyNSwgLTY2LjUyMzQ4NF0sIFs1MS43OTE1NDcsIC02Ni4yNDkxMzNdLCBbNTIuNjE0MTMzLCAtNjYuMDUzMTc2XSwgWzUzLjYxMzAzOCwgLTY1Ljg5NjM5XSwgWzU0LjUzMzU1LCAtNjUuODE4MDQ5XSwgWzU1LjQxNDk0MywgLTY1Ljg3NjgwNV0sIFs1Ni4zNTUwNDEsIC02NS45NzQ3ODNdLCBbNTcuMTU4MDkzLCAtNjYuMjQ5MTMzXSwgWzU3LjI1NTk2OCwgLTY2LjY4MDIxOF0sIFs1OC4xMzczNjEsIC02Ny4wMTMzMjRdLCBbNTguNzQ0NTA4LCAtNjcuMjg3Njc1XSwgWzU5LjkzOTMxOCwgLTY3LjQwNTIzOV0sIFs2MC42MDUyMjEsIC02Ny42Nzk1ODldLCBbNjEuNDI3ODA2LCAtNjcuOTUzODg3XSwgWzYyLjM4NzQ4OSwgLTY4LjAxMjY5NV0sIFs2My4xOTA0OSwgLTY3LjgxNjczOF0sIFs2NC4wNTIzNDksIC02Ny40MDUyMzldLCBbNjQuOTkyNDQ3LCAtNjcuNjIwNzI5XSwgWzY1Ljk3MTcxNSwgLTY3LjczODM0NV0sIFs2Ni45MTE4NjQsIC02Ny44NTU5MDldLCBbNjcuODkxMTMzLCAtNjcuOTM0MzAyXSwgWzY4Ljg5MDAzOCwgLTY3LjkzNDMwMl0sIFs2OS43MTI2MjQsIC02OC45NzI3OTFdLCBbNjkuNjczNDUzLCAtNjkuMjI3NTU2XSwgWzY5LjU1NTk0MSwgLTY5LjY3ODIyNl0sIFs2OC41OTYyNTgsIC02OS45MzI5NF0sIFs2Ny44MTI3NCwgLTcwLjMwNTI2OF0sIFs2Ny45NDk4ODksIC03MC42OTcxODJdLCBbNjkuMDY2MzA3LCAtNzAuNjc3NTQ1XSwgWzY4LjkyOTE1NywgLTcxLjA2OTQ1OV0sIFs2OC40MTk5ODksIC03MS40NDE3ODhdLCBbNjcuOTQ5ODg5LCAtNzEuODUzMjg3XSwgWzY4LjcxMzc3LCAtNzIuMTY2ODA4XSwgWzY5Ljg2OTMwNywgLTcyLjI2NDc4N10sIFs3MS4wMjQ4OTUsIC03Mi4wODg0MTVdLCBbNzEuNTczMjg1LCAtNzEuNjk2NTAxXSwgWzcxLjkwNjI4OCwgLTcxLjMyNDIyNF0sIFs3Mi40NTQ2MjcsIC03MS4wMTA3MDNdLCBbNzMuMDgxNDEsIC03MC43MTY3NjhdLCBbNzMuMzM2MDIsIC03MC4zNjQwMjRdLCBbNzMuODY0ODc3LCAtNjkuODc0MTgzXSwgWzc0LjQ5MTU1NywgLTY5Ljc3NjIwNV0sIFs3NS42Mjc1NiwgLTY5LjczNzAzNF0sIFs3Ni42MjY0NjUsIC02OS42MTk0MTldLCBbNzcuNjQ0OTA0LCAtNjkuNDYyNjg0XSwgWzc4LjEzNDUzOSwgLTY5LjA3MDc3XSwgWzc4LjQyODM3MSwgLTY4LjY5ODQ0MV0sIFs3OS4xMTM4NTksIC02OC4zMjYyMTZdLCBbODAuMDkzMTI3LCAtNjguMDcxNTAzXSwgWzgwLjkzNTM1LCAtNjcuODc1NTQ2XSwgWzgxLjQ4Mzc5MiwgLTY3LjU0MjM4OF0sIFs4Mi4wNTE3NjcsIC02Ny4zNjYwNjhdLCBbODIuNzc2NDI2LCAtNjcuMjA5MjgyXSwgWzgzLjc3NTMzMSwgLTY3LjMwNzI2XSwgWzg0LjY3NjIwNiwgLTY3LjIwOTI4Ml0sIFs4NS42NTU1MjcsIC02Ny4wOTE3MThdLCBbODYuNzUyMzU5LCAtNjcuMTUwNDc0XSwgWzg3LjQ3NzAxNywgLTY2Ljg3NjE3NV0sIFs4Ny45ODYyODksIC02Ni4yMDk5MTFdLCBbODguMzU4NDExLCAtNjYuNDg0MjYxXSwgWzg4LjgyODQwOCwgLTY2Ljk1NDU2OF0sIFs4OS42NzA2MywgLTY3LjE1MDQ3NF0sIFs5MC42MzAzNjUsIC02Ny4yMjg4NjddLCBbOTEuNTkwMSwgLTY3LjExMTMwM10sIFs5Mi42MDg1MzksIC02Ny4xODk2OTZdLCBbOTMuNTQ4NjM3LCAtNjcuMjA5MjgyXSwgWzk0LjE3NTQyLCAtNjcuMTExMzAzXSwgWzk1LjAxNzU5MSwgLTY3LjE3MDExMV0sIFs5NS43ODE0NzIsIC02Ny4zODU2NTNdLCBbOTYuNjgyMzk5LCAtNjcuMjQ4NTA0XSwgWzk3Ljc1OTY0NiwgLTY3LjI0ODUwNF0sIFs5OC42ODAyMSwgLTY3LjExMTMwM10sIFs5OS43MTgxODIsIC02Ny4yNDg1MDRdLCBbMTAwLjM4NDE4OCwgLTY2LjkxNTM0Nl0sIFsxMDAuODkzMzU2LCAtNjYuNTgyMjRdLCBbMTAxLjU3ODg5NiwgLTY2LjMwNzg5XSwgWzEwMi44MzI0MTEsIC02NS41NjMyODRdLCBbMTAzLjQ3ODY3NiwgLTY1LjcwMDQ4NV0sIFsxMDQuMjQyNTU3LCAtNjUuOTc0NzgzXSwgWzEwNC45MDg0NiwgLTY2LjMyNzUyN10sIFsxMDYuMTgxNTYxLCAtNjYuOTM0OTMxXSwgWzEwNy4xNjA4ODEsIC02Ni45NTQ1NjhdLCBbMTA4LjA4MTM5MywgLTY2Ljk1NDU2OF0sIFsxMDkuMTU4NjQsIC02Ni44MzcwMDRdLCBbMTEwLjIzNTgzNSwgLTY2LjY5OTgwNF0sIFsxMTEuMDU4NDcyLCAtNjYuNDI1NTA1XSwgWzExMS43NDM5NiwgLTY2LjEzMTU3XSwgWzExMi44NjAzNzgsIC02Ni4wOTIzNDddLCBbMTEzLjYwNDY3MywgLTY1Ljg3NjgwNV0sIFsxMTQuMzg4MDg4LCAtNjYuMDcyNzYyXSwgWzExNC44OTczMDgsIC02Ni4zODYyODNdLCBbMTE1LjYwMjM4MSwgLTY2LjY5OTgwNF0sIFsxMTYuNjk5MTYxLCAtNjYuNjYwNjMzXSwgWzExNy4zODQ3MDEsIC02Ni45MTUzNDZdLCBbMTE4LjU3OTQ2LCAtNjcuMTcwMTExXSwgWzExOS44MzI5MjQsIC02Ny4yNjgwODldLCBbMTIwLjg3MSwgLTY3LjE4OTY5Nl0sIFsxMjEuNjU0NDE1LCAtNjYuODc2MTc1XSwgWzEyMi4zMjAzNjksIC02Ni41NjI2NTRdLCBbMTIzLjIyMTI5NiwgLTY2LjQ4NDI2MV0sIFsxMjQuMTIyMjc0LCAtNjYuNjIxNDYyXSwgWzEyNS4xNjAyNDcsIC02Ni43MTkzODldLCBbMTI2LjEwMDM5NiwgLTY2LjU2MjY1NF0sIFsxMjcuMDAxNDI3LCAtNjYuNTYyNjU0XSwgWzEyNy44ODI3NjgsIC02Ni42NjA2MzNdLCBbMTI4LjgwMzI4LCAtNjYuNzU4NjExXSwgWzEyOS43MDQyNTksIC02Ni41ODIyNF0sIFsxMzAuNzgxNDU0LCAtNjYuNDI1NTA1XSwgWzEzMS43OTk5NDUsIC02Ni4zODYyODNdLCBbMTMyLjkzNTg5NiwgLTY2LjM4NjI4M10sIFsxMzMuODU2NDYsIC02Ni4yODgzMDRdLCBbMTM0Ljc1NzM4NywgLTY2LjIwOTk2M10sIFsxMzUuMDMxNTgyLCAtNjUuNzIwMDddLCBbMTM1LjA3MDc1MywgLTY1LjMwODU3MV0sIFsxMzUuNjk3NDg1LCAtNjUuNTgyODY5XSwgWzEzNS44NzM4MDUsIC02Ni4wMzM1OTFdLCBbMTM2LjIwNjcwNSwgLTY2LjQ0NTA5XSwgWzEzNi42MTgwNDksIC02Ni43NzgxOTddLCBbMTM3LjQ2MDI3MSwgLTY2Ljk1NDU2OF0sIFsxMzguNTk2MjIzLCAtNjYuODk1NzYxXSwgWzEzOS45MDg0NDIsIC02Ni44NzYxNzVdLCBbMTQwLjgwOTQyMSwgLTY2LjgxNzM2N10sIFsxNDIuMTIxNjkyLCAtNjYuODE3MzY3XSwgWzE0My4wNjE4NDIsIC02Ni43OTc3ODJdLCBbMTQ0LjM3NDA2MSwgLTY2LjgzNzAwNF0sIFsxNDUuNDkwNDI3LCAtNjYuOTE1MzQ2XSwgWzE0Ni4xOTU1NTIsIC02Ny4yMjg4NjddLCBbMTQ1Ljk5OTY5OSwgLTY3LjYwMTE5Nl0sIFsxNDYuNjQ2MDY3LCAtNjcuODk1MTMxXSwgWzE0Ny43MjMyNjMsIC02OC4xMzAyNTldLCBbMTQ4LjgzOTYyOSwgLTY4LjM4NTAyNF0sIFsxNTAuMTMyMzE0LCAtNjguNTYxMjkyXSwgWzE1MS40ODM3MDUsIC02OC43MTgxM10sIFsxNTIuNTAyMjQ3LCAtNjguODc0ODEzXSwgWzE1My42MzgxOTksIC02OC44OTQ1MDJdLCBbMTU0LjI4NDU2NywgLTY4LjU2MTI5Ml0sIFsxNTUuMTY1ODU3LCAtNjguODM1NjQyXSwgWzE1NS45Mjk3OSwgLTY5LjE0OTIxNV0sIFsxNTYuODExMTMyLCAtNjkuMzg0MjkxXSwgWzE1OC4wMjU1MjgsIC02OS40ODIyNjldLCBbMTU5LjE4MTAxMywgLTY5LjU5OTgzM10sIFsxNTkuNjcwNjk5LCAtNjkuOTkxNzQ3XSwgWzE2MC44MDY2NSwgLTcwLjIyNjg3NV0sIFsxNjEuNTcwNDc5LCAtNzAuNTc5NjE4XSwgWzE2Mi42ODY4OTcsIC03MC43MzYzNTNdLCBbMTYzLjg0MjQzNCwgLTcwLjcxNjc2OF0sIFsxNjQuOTE5NjgxLCAtNzAuNzc1NTI0XSwgWzE2Ni4xMTQ0NCwgLTcwLjc1NTkzOF0sIFsxNjcuMzA5MDk1LCAtNzAuODM0MzMyXSwgWzE2OC40MjU2MTYsIC03MC45NzE0ODFdLCBbMTY5LjQ2MzU4OSwgLTcxLjIwNjY2XSwgWzE3MC41MDE2NjUsIC03MS40MDI2MTddLCBbMTcxLjIwNjc5LCAtNzEuNjk2NTAxXSwgWzE3MS4wODkyMjcsIC03Mi4wODg0MTVdLCBbMTcwLjU2MDQyMiwgLTcyLjQ0MTE1OV0sIFsxNzAuMTA5OTU4LCAtNzIuODkxODI5XSwgWzE2OS43NTczNywgLTczLjI0NDUyXSwgWzE2OS4yODczMjEsIC03My42NTYwMl0sIFsxNjcuOTc1MTAxLCAtNzMuODEyODA2XSwgWzE2Ny4zODc0ODksIC03NC4xNjU0OThdLCBbMTY2LjA5NDgwMywgLTc0LjM4MTA0XSwgWzE2NS42NDQzOTEsIC03NC43NzI5NTRdLCBbMTY0Ljk1ODg1MSwgLTc1LjE0NTI4M10sIFsxNjQuMjM0MTkzLCAtNzUuNDU4ODA0XSwgWzE2My44MjI3OTcsIC03NS44NzAzMDNdLCBbMTYzLjU2ODIzOSwgLTc2LjI0MjU4XSwgWzE2My40NzAyNiwgLTc2LjY5MzMwMl0sIFsxNjMuNDg5ODk3LCAtNzcuMDY1NTc5XSwgWzE2NC4wNTc4NzMsIC03Ny40NTc0NDJdLCBbMTY0LjI3MzM2MywgLTc3LjgyOTc3XSwgWzE2NC43NDM0NjQsIC03OC4xODI1MTRdLCBbMTY2LjYwNDEyNiwgLTc4LjMxOTYxMV0sIFsxNjYuOTk1NzgxLCAtNzguNzUwNzQ4XSwgWzE2NS4xOTM4NzYsIC03OC45MDc0ODNdLCBbMTYzLjY2NjIxNywgLTc5LjEyMzAyNV0sIFsxNjEuNzY2Mzg1LCAtNzkuMTYyMjQ4XSwgWzE2MC45MjQxNjIsIC03OS43MzA0ODJdLCBbMTYwLjc0Nzg5NCwgLTgwLjIwMDczN10sIFsxNjAuMzE2OTY0LCAtODAuNTczMDY2XSwgWzE1OS43ODgyMTEsIC04MC45NDUzOTVdLCBbMTYxLjEyMDAxNiwgLTgxLjI3ODUwMV0sIFsxNjEuNjI5Mjg3LCAtODEuNjkwMDAxXSwgWzE2Mi40OTA5OTIsIC04Mi4wNjIyNzhdLCBbMTYzLjcwNTMzNiwgLTgyLjM5NTQzNV0sIFsxNjUuMDk1OTQ5LCAtODIuNzA4OTU2XSwgWzE2Ni42MDQxMjYsIC04My4wMjI0NzddLCBbMTY4Ljg5NTY2NSwgLTgzLjMzNTk5OF0sIFsxNjkuNDA0NzgyLCAtODMuODI1ODkxXSwgWzE3Mi4yODM5MzQsIC04NC4wNDE0MzNdLCBbMTcyLjQ3NzA0OSwgLTg0LjExNzkxNF0sIFsxNzMuMjI0MDgzLCAtODQuNDEzNzFdLCBbMTc1Ljk4NTY3MiwgLTg0LjE1ODk5N10sIFsxNzguMjc3MjEyLCAtODQuNDcyNTE4XSwgWzE4MCwgLTg0LjcxMzM4XSwgWy0xNzkuOTQyNDk5LCAtODQuNzIxNDQzXSwgWy0xNzkuMDU4Njc3LCAtODQuMTM5NDEyXSwgWy0xNzcuMjU2NzcyLCAtODQuNDUyOTMzXSwgWy0xNzcuMTQwODA3LCAtODQuNDE3OTQxXSwgWy0xNzYuMDg0NjczLCAtODQuMDk5MjU5XSwgWy0xNzUuOTQ3MjM1LCAtODQuMTEwNDQ5XSwgWy0xNzUuODI5ODgyLCAtODQuMTE3OTE0XSwgWy0xNzQuMzgyNTAzLCAtODQuNTM0MzIzXSwgWy0xNzMuMTE2NTU5LCAtODQuMTE3OTE0XSwgWy0xNzIuODg5MTA2LCAtODQuMDYxMDE5XSwgWy0xNjkuOTUxMjIzLCAtODMuODg0NjQ3XSwgWy0xNjguOTk5OTg5LCAtODQuMTE3OTE0XSwgWy0xNjguNTMwMTk5LCAtODQuMjM3MzldLCBbLTE2Ny4wMjIwOTksIC04NC41NzA0OTddLCBbLTE2NC4xODIxNDQsIC04NC44MjUyMV0sIFstMTYxLjkyOTc3NSwgLTg1LjEzODczMV0sIFstMTU4LjA3MTM4LCAtODUuMzczOTFdLCBbLTE1NS4xOTIyNTMsIC04NS4wOTk1Nl0sIFstMTUwLjk0MjA5OSwgLTg1LjI5NTUxN10sIFstMTQ4LjUzMzA3MywgLTg1LjYwOTAzOF0sIFstMTQ1Ljg4ODkxOCwgLTg1LjMxNTEwMl0sIFstMTQzLjEwNzcxOCwgLTg1LjA0MDc1Ml0sIFstMTQyLjg5MjI3OSwgLTg0LjU3MDQ5N10sIFstMTQ2LjgyOTA2OCwgLTg0LjUzMTI3NF0sIFstMTUwLjA2MDczMiwgLTg0LjI5NjE0Nl0sIFstMTUwLjkwMjkyOCwgLTgzLjkwNDIzMl0sIFstMTUzLjU4NjIwMSwgLTgzLjY4ODY5XSwgWy0xNTMuNDA5OTA3LCAtODMuMjM4MDJdLCBbLTE1My4wMzc3NTksIC04Mi44MjY1Ml0sIFstMTUyLjY2NTYzNywgLTgyLjQ1NDE5Ml0sIFstMTUyLjg2MTUxNywgLTgyLjA0MjY5Ml0sIFstMTU0LjUyNjI5OSwgLTgxLjc2ODM5NF0sIFstMTU1LjI5MDE4LCAtODEuNDE1NjVdLCBbLTE1Ni44Mzc0NSwgLTgxLjEwMjEyOV0sIFstMTU0LjQwODc4NywgLTgxLjE2MDkzN10sIFstMTUyLjA5NzY2MiwgLTgxLjAwNDE1MV0sIFstMTUwLjY0ODI5MywgLTgxLjMzNzMwOV0sIFstMTQ4Ljg2NTk5OCwgLTgxLjA0MzM3M10sIFstMTQ3LjIyMDc1LCAtODAuNjcxMDQ1XSwgWy0xNDYuNDE3NzQ5LCAtODAuMzM3OTM4XSwgWy0xNDYuNzcwMjg2LCAtNzkuOTI2NDM5XSwgWy0xNDguMDYyOTQ3LCAtNzkuNjUyMDg5XSwgWy0xNDkuNTMxOTAxLCAtNzkuMzU4MjA1XSwgWy0xNTEuNTg4NDE2LCAtNzkuMjk5Mzk3XSwgWy0xNTMuMzkwMzIyLCAtNzkuMTYyMjQ4XSwgWy0xNTUuMzI5Mzc2LCAtNzkuMDY0MjY5XSwgWy0xNTUuOTc1NjY4LCAtNzguNjkxOTRdLCBbLTE1Ny4yNjgzMDIsIC03OC4zNzg0MTldLCBbLTE1OC4wNTE3NjgsIC03OC4wMjU2NzZdLCBbLTE1OC4zNjUxMzQsIC03Ni44ODkyMDddLCBbLTE1Ny44NzU0NzQsIC03Ni45ODcyMzhdLCBbLTE1Ni45NzQ1NzMsIC03Ny4zMDA3NTldLCBbLTE1NS4zMjkzNzYsIC03Ny4yMDI3MjhdLCBbLTE1My43NDI4MzIsIC03Ny4wNjU1NzldLCBbLTE1Mi45MjAyNDcsIC03Ny40OTY2NjRdLCBbLTE1MS4zMzM3OCwgLTc3LjM5ODczN10sIFstMTUwLjAwMTk1LCAtNzcuMTgzMTQzXSwgWy0xNDguNzQ4NDg2LCAtNzYuOTA4ODQ1XSwgWy0xNDcuNjEyNDgzLCAtNzYuNTc1NzM4XSwgWy0xNDYuMTA0NDA5LCAtNzYuNDc3NzZdLCBbLTE0Ni4xNDM1MjgsIC03Ni4xMDU0MzFdLCBbLTE0Ni40OTYwOTEsIC03NS43MzMxNTRdLCBbLTE0Ni4yMDIzMSwgLTc1LjM4MDQxMV0sIFstMTQ0LjkwOTYyNCwgLTc1LjIwNDAzOV0sIFstMTQ0LjMyMjAzNywgLTc1LjUzNzE5N10sIFstMTQyLjc5NDM1MywgLTc1LjM0MTI0XSwgWy0xNDEuNjM4NzY0LCAtNzUuMDg2NDc1XSwgWy0xNDAuMjA5MDA3LCAtNzUuMDY2ODldLCBbLTEzOC44NTc1OSwgLTc0Ljk2ODkxMV0sIFstMTM3LjUwNjIsIC03NC43MzM3ODNdLCBbLTEzNi40Mjg5MDEsIC03NC41MTgyNDFdLCBbLTEzNS4yMTQ1ODMsIC03NC4zMDI2OTldLCBbLTEzNC40MzExOTQsIC03NC4zNjE0NTVdLCBbLTEzMy43NDU2NTQsIC03NC40Mzk4NDhdLCBbLTEzMi4yNTcxNjgsIC03NC4zMDI2OTldLCBbLTEzMC45MjUzMTEsIC03NC40NzkwMTldLCBbLTEyOS41NTQyODQsIC03NC40NTk0MzNdLCBbLTEyOC4yNDIwMzgsIC03NC4zMjIyODRdLCBbLTEyNi44OTA2MjIsIC03NC40MjAyNjNdLCBbLTEyNS40MDIwODIsIC03NC41MTgyNDFdLCBbLTEyNC4wMTE0OTYsIC03NC40NzkwMTldLCBbLTEyMi41NjIxNTIsIC03NC40OTg2MDRdLCBbLTEyMS4wNzM2MTMsIC03NC41MTgyNDFdLCBbLTExOS43MDI1NiwgLTc0LjQ3OTAxOV0sIFstMTE4LjY4NDE0NSwgLTc0LjE4NTA4M10sIFstMTE3LjQ2OTgwMSwgLTc0LjAyODM0OF0sIFstMTE2LjIxNjMxMiwgLTc0LjI0Mzg5MV0sIFstMTE1LjAyMTU1MiwgLTc0LjA2NzUxOV0sIFstMTEzLjk0NDMzMSwgLTczLjcxNDgyOF0sIFstMTEzLjI5Nzk4OCwgLTc0LjAyODM0OF0sIFstMTEyLjk0NTQ1MiwgLTc0LjM4MTA0XSwgWy0xMTIuMjk5MDgzLCAtNzQuNzE0MTk4XSwgWy0xMTEuMjYxMDU5LCAtNzQuNDIwMjYzXSwgWy0xMTAuMDY2MzI1LCAtNzQuNzkyNTRdLCBbLTEwOC43MTQ5MDksIC03NC45MTAxMDNdLCBbLTEwNy41NTkzNDYsIC03NS4xODQ0NTRdLCBbLTEwNi4xNDkxNDgsIC03NS4xMjU2OThdLCBbLTEwNC44NzYwNzQsIC03NC45NDkzMjZdLCBbLTEwMy4zNjc5NDksIC03NC45ODg0OTddLCBbLTEwMi4wMTY1MDcsIC03NS4xMjU2OThdLCBbLTEwMC42NDU1MzEsIC03NS4zMDIwMThdLCBbLTEwMC4xMTY3LCAtNzQuODcwOTMzXSwgWy0xMDAuNzYzMDQzLCAtNzQuNTM3ODI2XSwgWy0xMDEuMjUyNzAzLCAtNzQuMTg1MDgzXSwgWy0xMDIuNTQ1MzM3LCAtNzQuMTA2NzQyXSwgWy0xMDMuMTEzMzEzLCAtNzMuNzM0NDEzXSwgWy0xMDMuMzI4NzUyLCAtNzMuMzYyMDg0XSwgWy0xMDMuNjgxMjg5LCAtNzIuNjE3NTNdLCBbLTEwMi45MTc0ODUsIC03Mi43NTQ2NzldLCBbLTEwMS42MDUyNCwgLTcyLjgxMzQzNl0sIFstMTAwLjMxMjUyOCwgLTcyLjc1NDY3OV0sIFstOTkuMTM3MzgsIC03Mi45MTE0MTRdLCBbLTk4LjExODg4OSwgLTczLjIwNTM1XSwgWy05Ny42ODgwMzcsIC03My41NTgwNDFdLCBbLTk2LjMzNjU5NSwgLTczLjYxNjg0OV0sIFstOTUuMDQzOTYxLCAtNzMuNDc5N10sIFstOTMuNjcyOTA3LCAtNzMuMjgzNzQzXSwgWy05Mi40MzkwMDMsIC03My4xNjYxNzldLCBbLTkxLjQyMDU2NCwgLTczLjQwMTMwN10sIFstOTAuMDg4NzMzLCAtNzMuMzIyOTE0XSwgWy04OS4yMjY5NTEsIC03Mi41NTg3MjJdLCBbLTg4LjQyMzk1MSwgLTczLjAwOTM5M10sIFstODcuMjY4MzM3LCAtNzMuMTg1NzY0XSwgWy04Ni4wMTQ4MjIsIC03My4wODc3ODZdLCBbLTg1LjE5MjIzNiwgLTczLjQ3OTddLCBbLTgzLjg3OTk5MSwgLTczLjUxODg3MV0sIFstODIuNjY1NjQ2LCAtNzMuNjM2NDM0XSwgWy04MS40NzA5MTMsIC03My44NTE5NzddLCBbLTgwLjY4NzQ0NywgLTczLjQ3OTddLCBbLTgwLjI5NTc5MSwgLTczLjEyNjk1Nl0sIFstNzkuMjk2ODg2LCAtNzMuNTE4ODcxXSwgWy03Ny45MjU4NTgsIC03My40MjA4OTJdLCBbLTc2LjkwNzM2NywgLTczLjYzNjQzNF0sIFstNzYuMjIxODc5LCAtNzMuOTY5NTQxXSwgWy03NC44OTAwNDksIC03My44NzE2MTRdLCBbLTczLjg1MjAyNCwgLTczLjY1NjAyXSwgWy03Mi44MzM1MzMsIC03My40MDEzMDddLCBbLTcxLjYxOTIxNSwgLTczLjI2NDE1N10sIFstNzAuMjA5MDQyLCAtNzMuMTQ2NTQyXSwgWy02OC45MzU5MTYsIC03My4wMDkzOTNdLCBbLTY3Ljk1NjYyMiwgLTcyLjc5Mzg1XSwgWy02Ny4zNjkwNjEsIC03Mi40ODAzMjldLCBbLTY3LjEzNDAzNiwgLTcyLjA0OTI0NF0sIFstNjcuMjUxNTQ4LCAtNzEuNjM3NzQ1XSwgWy02Ny41NjQ5NCwgLTcxLjI0NTgzMV0sIFstNjcuOTE3NDc3LCAtNzAuODUzOTE3XSwgWy02OC4yMzA4NDMsIC03MC40NjIwNTVdLCBbLTY4LjQ4NTQ1MiwgLTcwLjEwOTMxMV0sIFstNjguNTQ0MjA5LCAtNjkuNzE3Mzk3XSwgWy02OC40NDYyODIsIC02OS4zMjU1MzVdLCBbLTY3Ljk3NjIzMywgLTY4Ljk1MzIwNl0sIFstNjcuNTg0NSwgLTY4LjU0MTcwN10sIFstNjcuNDI3ODQzLCAtNjguMTQ5ODQ0XSwgWy02Ny42MjM2NywgLTY3LjcxODc1OV0sIFstNjcuNzQxMTgzLCAtNjcuMzI2ODQ1XSwgWy02Ny4yNTE1NDgsIC02Ni44NzYxNzVdLCBbLTY2LjcwMzE4NCwgLTY2LjU4MjI0XSwgWy02Ni4wNTY4MTUsIC02Ni4yMDk5NjNdLCBbLTY1LjM3MTMyNywgLTY1Ljg5NjM5XSwgWy02NC41NjgyNzYsIC02NS42MDI1MDZdLCBbLTY0LjE3NjU0MiwgLTY1LjE3MTQyM10sIFstNjMuNjI4MTUyLCAtNjQuODk3MDczXSwgWy02My4wMDEzOTQsIC02NC42NDIzMDhdLCBbLTYyLjA0MTY4NiwgLTY0LjU4MzU1Ml0sIFstNjEuNDE0OTI4LCAtNjQuMjcwMDMxXSwgWy02MC43MDk4NTUsIC02NC4wNzQwNzRdLCBbLTU5Ljg4NzI2OSwgLTYzLjk1NjUxXSwgWy01OS4xNjI1ODUsIC02My43MDE3NDVdLCBbLTU4LjU5NDU1NywgLTYzLjM4ODIyNF0sIFstNTcuODExMTQzLCAtNjMuMjcwNjZdLCBbLTU3LjIyMzU4MiwgLTYzLjUyNTQyNV0sIFstNTcuNTk1NzMsIC02My44NTg1MzJdLCBbLTU4LjYxNDE0MywgLTY0LjE1MjQ2N11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQVRBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBbnRhcmN0aWNhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s2OC45MzUsIC00OC42MjVdLCBbNjkuNTgsIC00OC45NF0sIFs3MC41MjUsIC00OS4wNjVdLCBbNzAuNTYsIC00OS4yNTVdLCBbNzAuMjgsIC00OS43MV0sIFs2OC43NDUsIC00OS43NzVdLCBbNjguNzIsIC00OS4yNDI1XSwgWzY4Ljg2NzUsIC00OC44M10sIFs2OC45MzUsIC00OC42MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFURiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJlbmNoIFNvdXRoZXJuIGFuZCBBbnRhcmN0aWMgTGFuZHMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNDUuMzk3OTc4LCAtNDAuNzkyNTQ5XSwgWzE0Ni4zNjQxMjEsIC00MS4xMzc2OTVdLCBbMTQ2LjkwODU4NCwgLTQxLjAwMDU0Nl0sIFsxNDcuNjg5MjU5LCAtNDAuODA4MjU4XSwgWzE0OC4yODkwNjgsIC00MC44NzU0MzhdLCBbMTQ4LjM1OTg2NSwgLTQyLjA2MjQ0NV0sIFsxNDguMDE3MzAxLCAtNDIuNDA3MDI0XSwgWzE0Ny45MTQwNTIsIC00My4yMTE1MjJdLCBbMTQ3LjU2NDU2NCwgLTQyLjkzNzY4OV0sIFsxNDYuODcwMzQzLCAtNDMuNjM0NTk3XSwgWzE0Ni42NjMzMjcsIC00My41ODA4NTRdLCBbMTQ2LjA0ODM3OCwgLTQzLjU0OTc0NV0sIFsxNDUuNDMxOTMsIC00Mi42OTM3NzZdLCBbMTQ1LjI5NTA5LCAtNDIuMDMzNjFdLCBbMTQ0LjcxODA3MSwgLTQxLjE2MjU1Ml0sIFsxNDQuNzQzNzU1LCAtNDAuNzAzOTc1XSwgWzE0NS4zOTc5NzgsIC00MC43OTI1NDldXV0sIFtbWzE0My41NjE4MTEsIC0xMy43NjM2NTZdLCBbMTQzLjkyMjA5OSwgLTE0LjU0ODMxMV0sIFsxNDQuNTYzNzE0LCAtMTQuMTcxMTc2XSwgWzE0NC44OTQ5MDgsIC0xNC41OTQ0NThdLCBbMTQ1LjM3NDcyNCwgLTE0Ljk4NDk3Nl0sIFsxNDUuMjcxOTkxLCAtMTUuNDI4MjA1XSwgWzE0NS40ODUyNiwgLTE2LjI4NTY3Ml0sIFsxNDUuNjM3MDMzLCAtMTYuNzg0OTE4XSwgWzE0NS44ODg5MDQsIC0xNi45MDY5MjZdLCBbMTQ2LjE2MDMwOSwgLTE3Ljc2MTY1NV0sIFsxNDYuMDYzNjc0LCAtMTguMjgwMDczXSwgWzE0Ni4zODc0NzgsIC0xOC45NTgyNzRdLCBbMTQ3LjQ3MTA4MiwgLTE5LjQ4MDcyM10sIFsxNDguMTc3NjAyLCAtMTkuOTU1OTM5XSwgWzE0OC44NDg0MTQsIC0yMC4zOTEyMV0sIFsxNDguNzE3NDY1LCAtMjAuNjMzNDY5XSwgWzE0OS4yODk0MiwgLTIxLjI2MDUxMV0sIFsxNDkuNjc4MzM3LCAtMjIuMzQyNTEyXSwgWzE1MC4wNzczODIsIC0yMi4xMjI3ODRdLCBbMTUwLjQ4MjkzOSwgLTIyLjU1NjE0Ml0sIFsxNTAuNzI3MjY1LCAtMjIuNDAyNDA1XSwgWzE1MC44OTk1NTQsIC0yMy40NjIyMzddLCBbMTUxLjYwOTE3NSwgLTI0LjA3NjI1Nl0sIFsxNTIuMDczNTQsIC0yNC40NTc4ODddLCBbMTUyLjg1NTE5NywgLTI1LjI2NzUwMV0sIFsxNTMuMTM2MTYyLCAtMjYuMDcxMTczXSwgWzE1My4xNjE5NDksIC0yNi42NDEzMTldLCBbMTUzLjA5MjkwOSwgLTI3LjI2MDNdLCBbMTUzLjU2OTQ2OSwgLTI4LjExMDA2N10sIFsxNTMuNTEyMTA4LCAtMjguOTk1MDc3XSwgWzE1My4zMzkwOTUsIC0yOS40NTgyMDJdLCBbMTUzLjA2OTI0MSwgLTMwLjM1MDI0XSwgWzE1My4wODk2MDIsIC0zMC45MjM2NDJdLCBbMTUyLjg5MTU3OCwgLTMxLjY0MDQ0Nl0sIFsxNTIuNDUwMDAyLCAtMzIuNTUwMDAzXSwgWzE1MS43MDkxMTcsIC0zMy4wNDEzNDJdLCBbMTUxLjM0Mzk3MiwgLTMzLjgxNjAyM10sIFsxNTEuMDEwNTU1LCAtMzQuMzEwMzZdLCBbMTUwLjcxNDEzOSwgLTM1LjE3MzQ2XSwgWzE1MC4zMjgyMiwgLTM1LjY3MTg3OV0sIFsxNTAuMDc1MjEyLCAtMzYuNDIwMjA2XSwgWzE0OS45NDYxMjQsIC0zNy4xMDkwNTJdLCBbMTQ5Ljk5NzI4NCwgLTM3LjQyNTI2MV0sIFsxNDkuNDIzODgyLCAtMzcuNzcyNjgxXSwgWzE0OC4zMDQ2MjIsIC0zNy44MDkwNjFdLCBbMTQ3LjM4MTczMywgLTM4LjIxOTIxN10sIFsxNDYuOTIyMTIzLCAtMzguNjA2NTMyXSwgWzE0Ni4zMTc5MjIsIC0zOS4wMzU3NTddLCBbMTQ1LjQ4OTY1MiwgLTM4LjU5Mzc2OF0sIFsxNDQuODc2OTc2LCAtMzguNDE3NDQ4XSwgWzE0NS4wMzIyMTIsIC0zNy44OTYxODhdLCBbMTQ0LjQ4NTY4MiwgLTM4LjA4NTMyNF0sIFsxNDMuNjA5OTc0LCAtMzguODA5NDY1XSwgWzE0Mi43NDU0MjcsIC0zOC41MzgyNjhdLCBbMTQyLjE3ODMzLCAtMzguMzgwMDM0XSwgWzE0MS42MDY1ODIsIC0zOC4zMDg1MTRdLCBbMTQwLjYzODU3OSwgLTM4LjAxOTMzM10sIFsxMzkuOTkyMTU4LCAtMzcuNDAyOTM2XSwgWzEzOS44MDY1ODgsIC0zNi42NDM2MDNdLCBbMTM5LjU3NDE0OCwgLTM2LjEzODM2Ml0sIFsxMzkuMDgyODA4LCAtMzUuNzMyNzU0XSwgWzEzOC4xMjA3NDgsIC0zNS42MTIyOTZdLCBbMTM4LjQ0OTQ2MiwgLTM1LjEyNzI2MV0sIFsxMzguMjA3NTY0LCAtMzQuMzg0NzIzXSwgWzEzNy43MTkxNywgLTM1LjA3NjgyNV0sIFsxMzYuODI5NDA2LCAtMzUuMjYwNTM1XSwgWzEzNy4zNTIzNzEsIC0zNC43MDczMzldLCBbMTM3LjUwMzg4NiwgLTM0LjEzMDI2OF0sIFsxMzcuODkwMTE2LCAtMzMuNjQwNDc5XSwgWzEzNy44MTAzMjgsIC0zMi45MDAwMDddLCBbMTM2Ljk5NjgzNywgLTMzLjc1Mjc3MV0sIFsxMzYuMzcyMDY5LCAtMzQuMDk0NzY2XSwgWzEzNS45ODkwNDMsIC0zNC44OTAxMThdLCBbMTM1LjIwODIxMywgLTM0LjQ3ODY3XSwgWzEzNS4yMzkyMTgsIC0zMy45NDc5NTNdLCBbMTM0LjYxMzQxNywgLTMzLjIyMjc3OF0sIFsxMzQuMDg1OTA0LCAtMzIuODQ4MDcyXSwgWzEzNC4yNzM5MDMsIC0zMi42MTcyMzRdLCBbMTMyLjk5MDc3NywgLTMyLjAxMTIyNF0sIFsxMzIuMjg4MDgxLCAtMzEuOTgyNjQ3XSwgWzEzMS4zMjYzMzEsIC0zMS40OTU4MDNdLCBbMTI5LjUzNTc5NCwgLTMxLjU5MDQyM10sIFsxMjguMjQwOTM4LCAtMzEuOTQ4NDg5XSwgWzEyNy4xMDI4NjcsIC0zMi4yODIyNjddLCBbMTI2LjE0ODcxNCwgLTMyLjIxNTk2Nl0sIFsxMjUuMDg4NjIzLCAtMzIuNzI4NzUxXSwgWzEyNC4yMjE2NDgsIC0zMi45NTk0ODddLCBbMTI0LjAyODk0NywgLTMzLjQ4Mzg0N10sIFsxMjMuNjU5NjY3LCAtMzMuODkwMTc5XSwgWzEyMi44MTEwMzYsIC0zMy45MTQ0NjddLCBbMTIyLjE4MzA2NCwgLTM0LjAwMzQwMl0sIFsxMjEuMjk5MTkxLCAtMzMuODIxMDM2XSwgWzEyMC41ODAyNjgsIC0zMy45MzAxNzddLCBbMTE5Ljg5MzY5NSwgLTMzLjk3NjA2NV0sIFsxMTkuMjk4ODk5LCAtMzQuNTA5MzY2XSwgWzExOS4wMDczNDEsIC0zNC40NjQxNDldLCBbMTE4LjUwNTcxOCwgLTM0Ljc0NjgxOV0sIFsxMTguMDI0OTcyLCAtMzUuMDY0NzMzXSwgWzExNy4yOTU1MDcsIC0zNS4wMjU0NTldLCBbMTE2LjYyNTEwOSwgLTM1LjAyNTA5N10sIFsxMTUuNTY0MzQ3LCAtMzQuMzg2NDI4XSwgWzExNS4wMjY4MDksIC0zNC4xOTY1MTddLCBbMTE1LjA0ODYxNiwgLTMzLjYyMzQyNV0sIFsxMTUuNTQ1MTIzLCAtMzMuNDg3MjU4XSwgWzExNS43MTQ2NzQsIC0zMy4yNTk1NzJdLCBbMTE1LjY3OTM3OSwgLTMyLjkwMDM2OV0sIFsxMTUuODAxNjQ1LCAtMzIuMjA1MDYyXSwgWzExNS42ODk2MTEsIC0zMS42MTI0MzddLCBbMTE1LjE2MDkwOSwgLTMwLjYwMTU5NF0sIFsxMTQuOTk3MDQzLCAtMzAuMDMwNzI1XSwgWzExNS4wNDAwMzgsIC0yOS40NjEwOTVdLCBbMTE0LjY0MTk3NCwgLTI4LjgxMDIzMV0sIFsxMTQuNjE2NDk4LCAtMjguNTE2Mzk5XSwgWzExNC4xNzM1NzksIC0yOC4xMTgwNzddLCBbMTE0LjA0ODg4NCwgLTI3LjMzNDc2NV0sIFsxMTMuNDc3NDk4LCAtMjYuNTQzMTM0XSwgWzExMy4zMzg5NTMsIC0yNi4xMTY1NDVdLCBbMTEzLjc3ODM1OCwgLTI2LjU0OTAyNV0sIFsxMTMuNDQwOTYyLCAtMjUuNjIxMjc4XSwgWzExMy45MzY5MDEsIC0yNS45MTEyMzVdLCBbMTE0LjIzMjg1MiwgLTI2LjI5ODQ0Nl0sIFsxMTQuMjE2MTYxLCAtMjUuNzg2MjgxXSwgWzExMy43MjEyNTUsIC0yNC45OTg5MzldLCBbMTEzLjYyNTM0NCwgLTI0LjY4Mzk3MV0sIFsxMTMuMzkzNTIzLCAtMjQuMzg0NzY0XSwgWzExMy41MDIwNDQsIC0yMy44MDYzNV0sIFsxMTMuNzA2OTkzLCAtMjMuNTYwMjE1XSwgWzExMy44NDM0MTgsIC0yMy4wNTk5ODddLCBbMTEzLjczNjU1MiwgLTIyLjQ3NTQ3NV0sIFsxMTQuMTQ5NzU2LCAtMjEuNzU1ODgxXSwgWzExNC4yMjUzMDcsIC0yMi41MTc0ODhdLCBbMTE0LjY0Nzc2MiwgLTIxLjgyOTUyXSwgWzExNS40NjAxNjcsIC0yMS40OTUxNzNdLCBbMTE1Ljk0NzM3MywgLTIxLjA2ODY4OF0sIFsxMTYuNzExNjE1LCAtMjAuNzAxNjgyXSwgWzExNy4xNjYzMTYsIC0yMC42MjM1OTldLCBbMTE3LjQ0MTU0NSwgLTIwLjc0Njg5OV0sIFsxMTguMjI5NTU5LCAtMjAuMzc0MjA4XSwgWzExOC44MzYwODUsIC0yMC4yNjMzMTFdLCBbMTE4Ljk4NzgwNywgLTIwLjA0NDIwM10sIFsxMTkuMjUyNDk0LCAtMTkuOTUyOTQyXSwgWzExOS44MDUyMjUsIC0xOS45NzY1MDZdLCBbMTIwLjg1NjIyLCAtMTkuNjgzNzA4XSwgWzEyMS4zOTk4NTYsIC0xOS4yMzk3NTZdLCBbMTIxLjY1NTEzOCwgLTE4LjcwNTMxOF0sIFsxMjIuMjQxNjY1LCAtMTguMTk3NjQ5XSwgWzEyMi4yODY2MjQsIC0xNy43OTg2MDNdLCBbMTIyLjMxMjc3MiwgLTE3LjI1NDk2N10sIFsxMjMuMDEyNTc0LCAtMTYuNDA1Ml0sIFsxMjMuNDMzNzg5LCAtMTcuMjY4NTU4XSwgWzEyMy44NTkzNDUsIC0xNy4wNjkwMzVdLCBbMTIzLjUwMzI0MiwgLTE2LjU5NjUwNl0sIFsxMjMuODE3MDczLCAtMTYuMTExMzE2XSwgWzEyNC4yNTgyODcsIC0xNi4zMjc5NDRdLCBbMTI0LjM3OTcyNiwgLTE1LjU2NzA2XSwgWzEyNC45MjYxNTMsIC0xNS4wNzUxXSwgWzEyNS4xNjcyNzUsIC0xNC42ODAzOTZdLCBbMTI1LjY3MDA4NywgLTE0LjUxMDA3XSwgWzEyNS42ODU3OTYsIC0xNC4yMzA2NTZdLCBbMTI2LjEyNTE0OSwgLTE0LjM0NzM0MV0sIFsxMjYuMTQyODIzLCAtMTQuMDk1OTg3XSwgWzEyNi41ODI1ODksIC0xMy45NTI3OTFdLCBbMTI3LjA2NTg2NywgLTEzLjgxNzk2OF0sIFsxMjcuODA0NjMzLCAtMTQuMjc2OTA2XSwgWzEyOC4zNTk2OSwgLTE0Ljg2OTE3XSwgWzEyOC45ODU1NDMsIC0xNC44NzU5OTFdLCBbMTI5LjYyMTQ3MywgLTE0Ljk2OTc4NF0sIFsxMjkuNDA5NiwgLTE0LjQyMDY3XSwgWzEyOS44ODg2NDEsIC0xMy42MTg3MDNdLCBbMTMwLjMzOTQ2NiwgLTEzLjM1NzM3Nl0sIFsxMzAuMTgzNTA2LCAtMTMuMTA3NTJdLCBbMTMwLjYxNzc5NSwgLTEyLjUzNjM5Ml0sIFsxMzEuMjIzNDk1LCAtMTIuMTgzNjQ5XSwgWzEzMS43MzUwOTEsIC0xMi4zMDI0NTNdLCBbMTMyLjU3NTI5OCwgLTEyLjExNDA0MV0sIFsxMzIuNTU3MjEyLCAtMTEuNjAzMDEyXSwgWzEzMS44MjQ2OTgsIC0xMS4yNzM3ODJdLCBbMTMyLjM1NzIyNCwgLTExLjEyODUxOV0sIFsxMzMuMDE5NTYxLCAtMTEuMzc2NDExXSwgWzEzMy41NTA4NDYsIC0xMS43ODY1MTVdLCBbMTM0LjM5MzA2OCwgLTEyLjA0MjM2NV0sIFsxMzQuNjc4NjMyLCAtMTEuOTQxMTgzXSwgWzEzNS4yOTg0OTEsIC0xMi4yNDg2MDZdLCBbMTM1Ljg4MjY5MywgLTExLjk2MjI2N10sIFsxMzYuMjU4MzgxLCAtMTIuMDQ5MzQyXSwgWzEzNi40OTI0NzUsIC0xMS44NTcyMDldLCBbMTM2Ljk1MTYyLCAtMTIuMzUxOTU5XSwgWzEzNi42ODUxMjUsIC0xMi44ODcyMjNdLCBbMTM2LjMwNTQwNywgLTEzLjI5MTIzXSwgWzEzNS45NjE3NTgsIC0xMy4zMjQ1MDldLCBbMTM2LjA3NzYxNywgLTEzLjcyNDI3OF0sIFsxMzUuNzgzODM2LCAtMTQuMjIzOTg5XSwgWzEzNS40Mjg2NjQsIC0xNC43MTU0MzJdLCBbMTM1LjUwMDE4NCwgLTE0Ljk5Nzc0MV0sIFsxMzYuMjk1MTc1LCAtMTUuNTUwMjY1XSwgWzEzNy4wNjUzNiwgLTE1Ljg3MDc2Ml0sIFsxMzcuNTgwNDcxLCAtMTYuMjE1MDgyXSwgWzEzOC4zMDMyMTcsIC0xNi44MDc2MDRdLCBbMTM4LjU4NTE2NCwgLTE2LjgwNjYyMl0sIFsxMzkuMTA4NTQzLCAtMTcuMDYyNjc5XSwgWzEzOS4yNjA1NzUsIC0xNy4zNzE2MDFdLCBbMTQwLjIxNTI0NSwgLTE3LjcxMDgwNV0sIFsxNDAuODc1NDYzLCAtMTcuMzY5MDY5XSwgWzE0MS4wNzExMSwgLTE2LjgzMjA0N10sIFsxNDEuMjc0MDk1LCAtMTYuMzg4ODddLCBbMTQxLjM5ODIyMiwgLTE1Ljg0MDUzMl0sIFsxNDEuNzAyMTgzLCAtMTUuMDQ0OTIxXSwgWzE0MS41NjMzOCwgLTE0LjU2MTMzM10sIFsxNDEuNjM1NTIsIC0xNC4yNzAzOTVdLCBbMTQxLjUxOTg2OSwgLTEzLjY5ODA3OF0sIFsxNDEuNjUwOTIsIC0xMi45NDQ2ODhdLCBbMTQxLjg0MjY5MSwgLTEyLjc0MTU0OF0sIFsxNDEuNjg2OTksIC0xMi40MDc2MTRdLCBbMTQxLjkyODYyOSwgLTExLjg3NzQ2Nl0sIFsxNDIuMTE4NDg4LCAtMTEuMzI4MDQyXSwgWzE0Mi4xNDM3MDYsIC0xMS4wNDI3MzddLCBbMTQyLjUxNTI2LCAtMTAuNjY4MTg2XSwgWzE0Mi43OTczMSwgLTExLjE1NzM1NV0sIFsxNDIuODY2NzYzLCAtMTEuNzg0NzA3XSwgWzE0My4xMTU5NDcsIC0xMS45MDU2M10sIFsxNDMuMTU4NjMyLCAtMTIuMzI1NjU2XSwgWzE0My41MjIxMjQsIC0xMi44MzQzNThdLCBbMTQzLjU5NzE1OCwgLTEzLjQwMDQyMl0sIFsxNDMuNTYxODExLCAtMTMuNzYzNjU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBVVMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyYWxpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTYuOTc5NjY3LCA0OC4xMjM0OTddLCBbMTYuOTAzNzU0LCA0Ny43MTQ4NjZdLCBbMTYuMzQwNTg0LCA0Ny43MTI5MDJdLCBbMTYuNTM0MjY4LCA0Ny40OTYxNzFdLCBbMTYuMjAyMjk4LCA0Ni44NTIzODZdLCBbMTYuMDExNjY0LCA0Ni42ODM2MTFdLCBbMTUuMTM3MDkyLCA0Ni42NTg3MDNdLCBbMTQuNjMyNDcyLCA0Ni40MzE4MTddLCBbMTMuODA2NDc1LCA0Ni41MDkzMDZdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbOS45MzI0NDgsIDQ2LjkyMDcyOF0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjYzMjkzMiwgNDcuMzQ3NjAxXSwgWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS44OTYwNjgsIDQ3LjU4MDE5N10sIFsxMC40MDIwODQsIDQ3LjMwMjQ4OF0sIFsxMC41NDQ1MDQsIDQ3LjU2NjM5OV0sIFsxMS40MjY0MTQsIDQ3LjUyMzc2Nl0sIFsxMi4xNDEzNTcsIDQ3LjcwMzA4M10sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjkzMjYyNywgNDcuNDY3NjQ2XSwgWzEzLjAyNTg1MSwgNDcuNjM3NTg0XSwgWzEyLjg4NDEwMywgNDguMjg5MTQ2XSwgWzEzLjI0MzM1NywgNDguNDE2MTE1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2Ljg3OTk4MywgNDguNDcwMDEzXSwgWzE2Ljk3OTY2NywgNDguMTIzNDk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBVVQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1s0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS40NTc3MjIsIDM4Ljg3NDEzOV0sIFs0NC45NTI2ODgsIDM5LjMzNTc2NV0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ1LjAwMTk4NywgMzkuNzQwMDA0XV1dLCBbW1s0Ny4zNzMzMTUsIDQxLjIxOTczMl0sIFs0Ny44MTU2NjYsIDQxLjE1MTQxNl0sIFs0Ny45ODcyODMsIDQxLjQwNTgxOV0sIFs0OC41ODQzNTMsIDQxLjgwODg3XSwgWzQ5LjExMDI2NCwgNDEuMjgyMjg3XSwgWzQ5LjYxODkxNSwgNDAuNTcyOTI0XSwgWzUwLjA4NDgzLCA0MC41MjYxNTddLCBbNTAuMzkyODIxLCA0MC4yNTY1NjFdLCBbNDkuNTY5MjAyLCA0MC4xNzYxMDFdLCBbNDkuMzk1MjU5LCAzOS4zOTk0ODJdLCBbNDkuMjIzMjI4LCAzOS4wNDkyMTldLCBbNDguODU2NTMyLCAzOC44MTU0ODZdLCBbNDguODgzMjQ5LCAzOC4zMjAyNDVdLCBbNDguNjM0Mzc1LCAzOC4yNzAzNzhdLCBbNDguMDEwNzQ0LCAzOC43OTQwMTVdLCBbNDguMzU1NTI5LCAzOS4yODg3NjVdLCBbNDguMDYwMDk1LCAzOS41ODIyMzVdLCBbNDcuNjg1MDc5LCAzOS41MDgzNjRdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni40ODM0OTksIDM5LjQ2NDE1NV0sIFs0Ni4wMzQ1MzQsIDM5LjYyODAyMV0sIFs0NS42MTAwMTIsIDM5Ljg5OTk5NF0sIFs0NS44OTE5MDcsIDQwLjIxODQ3Nl0sIFs0NS4zNTkxNzUsIDQwLjU2MTUwNF0sIFs0NS41NjAzNTEsIDQwLjgxMjI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDUuMjE3NDI2LCA0MS40MTE0NTJdLCBbNDUuOTYyNjAxLCA0MS4xMjM4NzNdLCBbNDYuNTAxNjM3LCA0MS4wNjQ0NDVdLCBbNDYuNjM3OTA4LCA0MS4xODE2NzNdLCBbNDYuMTQ1NDMyLCA0MS43MjI4MDJdLCBbNDYuNDA0OTUxLCA0MS44NjA2NzVdLCBbNDYuNjg2MDcxLCA0MS44MjcxMzddLCBbNDcuMzczMzE1LCA0MS4yMTk3MzJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFaRSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXplcmJhaWphbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuNjMyMTc2LCAtMi45MTc4NThdLCBbMjkuOTM4MzU5LCAtMi4zNDg0ODddLCBbMzAuNDY5Njk2LCAtMi40MTM4NThdLCBbMzAuNTI3Njc3LCAtMi44MDc2MzJdLCBbMzAuNzQzMDEzLCAtMy4wMzQyODVdLCBbMzAuNzUyMjYzLCAtMy4zNTkzM10sIFszMC41MDU1NiwgLTMuNTY4NTY3XSwgWzMwLjExNjMzMywgLTQuMDkwMTM4XSwgWzI5Ljc1MzUxMiwgLTQuNDUyMzg5XSwgWzI5LjMzOTk5OCwgLTQuNDk5OTgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCREkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1cnVuZGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMuMzE0OTcxLCA1MS4zNDU3ODFdLCBbNC4wNDcwNzEsIDUxLjI2NzI1OV0sIFs0Ljk3Mzk5MSwgNTEuNDc1MDI0XSwgWzUuNjA2OTc2LCA1MS4wMzcyOThdLCBbNi4xNTY2NTgsIDUwLjgwMzcyMV0sIFs2LjA0MzA3MywgNTAuMTI4MDUyXSwgWzUuNzgyNDE3LCA1MC4wOTAzMjhdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs0Ljc5OTIyMiwgNDkuOTg1MzczXSwgWzQuMjg2MDIzLCA0OS45MDc0OTddLCBbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzIuNjU4NDIyLCA1MC43OTY4NDhdLCBbMi41MTM1NzMsIDUxLjE0ODUwNl0sIFszLjMxNDk3MSwgNTEuMzQ1NzgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCRUwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJlbGdpdW0iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIuNjkxNzAyLCA2LjI1ODgxN10sIFsxLjg2NTI0MSwgNi4xNDIxNThdLCBbMS42MTg5NTEsIDYuODMyMDM4XSwgWzEuNjY0NDc4LCA5LjEyODU5XSwgWzEuNDYzMDQzLCA5LjMzNDYyNF0sIFsxLjQyNTA2MSwgOS44MjUzOTVdLCBbMS4wNzc3OTUsIDEwLjE3NTYwN10sIFswLjc3MjMzNiwgMTAuNDcwODA4XSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzIuMTU0NDc0LCAxMS45NDAxNV0sIFsyLjQ5MDE2NCwgMTIuMjMzMDUyXSwgWzIuODQ4NjQzLCAxMi4yMzU2MzZdLCBbMy42MTExOCwgMTEuNjYwMTY3XSwgWzMuNTcyMjE2LCAxMS4zMjc5MzldLCBbMy43OTcxMTIsIDEwLjczNDc0Nl0sIFszLjYwMDA3LCAxMC4zMzIxODZdLCBbMy43MDU0MzgsIDEwLjA2MzIxXSwgWzMuMjIwMzUyLCA5LjQ0NDE1M10sIFsyLjkxMjMwOCwgOS4xMzc2MDhdLCBbMi43MjM3OTMsIDguNTA2ODQ1XSwgWzIuNzQ5MDYzLCA3Ljg3MDczNF0sIFsyLjY5MTcwMiwgNi4yNTg4MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmVuaW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjgyNzQ5NiwgOS42NDI0NjFdLCBbLTMuNTExODk5LCA5LjkwMDMyNl0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy00LjMzMDI0NywgOS42MTA4MzVdLCBbLTQuNzc5ODg0LCA5LjgyMTk4NV0sIFstNC45NTQ2NTMsIDEwLjE1MjcxNF0sIFstNS40MDQzNDIsIDEwLjM3MDczN10sIFstNS40NzA1NjUsIDEwLjk1MTI3XSwgWy01LjE5Nzg0MywgMTEuMzc1MTQ2XSwgWy01LjIyMDk0MiwgMTEuNzEzODU5XSwgWy00LjQyNzE2NiwgMTIuNTQyNjQ2XSwgWy00LjI4MDQwNSwgMTMuMjI4NDQ0XSwgWy00LjAwNjM5MSwgMTMuNDcyNDg1XSwgWy0zLjUyMjgwMywgMTMuMzM3NjYyXSwgWy0zLjEwMzcwNywgMTMuNTQxMjY3XSwgWy0yLjk2NzY5NCwgMTMuNzk4MTVdLCBbLTIuMTkxODI1LCAxNC4yNDY0MThdLCBbLTIuMDAxMDM1LCAxNC41NTkwMDhdLCBbLTEuMDY2MzYzLCAxNC45NzM4MTVdLCBbLTAuNTE1ODU0LCAxNS4xMTYxNThdLCBbLTAuMjY2MjU3LCAxNC45MjQzMDldLCBbMC4zNzQ4OTIsIDE0LjkyODkwOF0sIFswLjI5NTY0NiwgMTQuNDQ0MjM1XSwgWzAuNDI5OTI4LCAxMy45ODg3MzNdLCBbMC45OTMwNDYsIDEzLjMzNTc1XSwgWzEuMDI0MTAzLCAxMi44NTE4MjZdLCBbMi4xNzcxMDgsIDEyLjYyNTAxOF0sIFsyLjE1NDQ3NCwgMTEuOTQwMTVdLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC40Mzg3MDIsIDExLjA5ODM0MV0sIFstMC43NjE1NzYsIDEwLjkzNjkzXSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0yLjk0MDQwOSwgMTAuOTYyNjldLCBbLTIuOTYzODk2LCAxMC4zOTUzMzVdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkZBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCdXJraW5hIEZhc28iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkyLjY3MjcyMSwgMjIuMDQxMjM5XSwgWzkyLjY1MjI1NywgMjEuMzI0MDQ4XSwgWzkyLjMwMzIzNCwgMjEuNDc1NDg1XSwgWzkyLjM2ODU1NCwgMjAuNjcwODgzXSwgWzkyLjA4Mjg4NiwgMjEuMTkyMTk1XSwgWzkyLjAyNTIxNSwgMjEuNzAxNTddLCBbOTEuODM0ODkxLCAyMi4xODI5MzZdLCBbOTEuNDE3MDg3LCAyMi43NjUwMTldLCBbOTAuNDk2MDA2LCAyMi44MDUwMTddLCBbOTAuNTg2OTU3LCAyMi4zOTI3OTRdLCBbOTAuMjcyOTcxLCAyMS44MzYzNjhdLCBbODkuODQ3NDY3LCAyMi4wMzkxNDZdLCBbODkuNzAyMDUsIDIxLjg1NzExNl0sIFs4OS40MTg4NjMsIDIxLjk2NjE3OV0sIFs4OS4wMzE5NjEsIDIyLjA1NTcwOF0sIFs4OC44NzYzMTIsIDIyLjg3OTE0Nl0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4LjY5OTk0LCAyNC4yMzM3MTVdLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuOTIwNjkzLCAyNS4yNjk3NV0sIFs5MC44NzIyMTEsIDI1LjEzMjYwMV0sIFs5MS43OTk1OTYsIDI1LjE0NzQzMl0sIFs5Mi4zNzYyMDIsIDI0Ljk3NjY5M10sIFs5MS45MTUwOTMsIDI0LjEzMDQxNF0sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjE1ODk2MywgMjMuNTAzNTI3XSwgWzkxLjcwNjQ3NSwgMjIuOTg1MjY0XSwgWzkxLjg2OTkyOCwgMjMuNjI0MzQ2XSwgWzkyLjE0NjAzNSwgMjMuNjI3NDk5XSwgWzkyLjY3MjcyMSwgMjIuMDQxMjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR0QiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJhbmdsYWRlc2giLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIyLjY1NzE1LCA0NC4yMzQ5MjNdLCBbMjIuOTQ0ODMyLCA0My44MjM3ODVdLCBbMjMuMzMyMzAyLCA0My44OTcwMTFdLCBbMjQuMTAwNjc5LCA0My43NDEwNTFdLCBbMjUuNTY5MjcyLCA0My42ODg0NDVdLCBbMjYuMDY1MTU5LCA0My45NDM0OTRdLCBbMjcuMjQyNCwgNDQuMTc1OTg2XSwgWzI3Ljk3MDEwNywgNDMuODEyNDY4XSwgWzI4LjU1ODA4MSwgNDMuNzA3NDYyXSwgWzI4LjAzOTA5NSwgNDMuMjkzMTcyXSwgWzI3LjY3Mzg5OCwgNDIuNTc3ODkyXSwgWzI3Ljk5NjcyLCA0Mi4wMDczNTldLCBbMjcuMTM1NzM5LCA0Mi4xNDE0ODVdLCBbMjYuMTE3MDQyLCA0MS44MjY5MDVdLCBbMjYuMTA2MTM4LCA0MS4zMjg4OTldLCBbMjUuMTk3MjAxLCA0MS4yMzQ0ODZdLCBbMjQuNDkyNjQ1LCA0MS41ODM4OTZdLCBbMjMuNjkyMDc0LCA0MS4zMDkwODFdLCBbMjIuOTUyMzc3LCA0MS4zMzc5OTRdLCBbMjIuODgxMzc0LCA0MS45OTkyOTddLCBbMjIuMzgwNTI2LCA0Mi4zMjAyNl0sIFsyMi41NDUwMTIsIDQyLjQ2MTM2Ml0sIFsyMi40MzY1OTUsIDQyLjU4MDMyMV0sIFsyMi42MDQ4MDEsIDQyLjg5ODUxOV0sIFsyMi45ODYwMTksIDQzLjIxMTE2MV0sIFsyMi41MDAxNTcsIDQzLjY0MjgxNF0sIFsyMi40MTA0NDYsIDQ0LjAwODA2M10sIFsyMi42NTcxNSwgNDQuMjM0OTIzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1bGdhcmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTc3LjUzNDY2LCAyMy43NTk3NV0sIFstNzcuNzgsIDIzLjcxXSwgWy03OC4wMzQwNSwgMjQuMjg2MTVdLCBbLTc4LjQwODQ4LCAyNC41NzU2NF0sIFstNzguMTkwODcsIDI1LjIxMDNdLCBbLTc3Ljg5LCAyNS4xN10sIFstNzcuNTQsIDI0LjM0XSwgWy03Ny41MzQ2NiwgMjMuNzU5NzVdXV0sIFtbWy03Ny44MiwgMjYuNThdLCBbLTc4LjkxLCAyNi40Ml0sIFstNzguOTgsIDI2Ljc5XSwgWy03OC41MSwgMjYuODddLCBbLTc3Ljg1LCAyNi44NF0sIFstNzcuODIsIDI2LjU4XV1dLCBbW1stNzcsIDI2LjU5XSwgWy03Ny4xNzI1NSwgMjUuODc5MThdLCBbLTc3LjM1NjQxLCAyNi4wMDczNV0sIFstNzcuMzQsIDI2LjUzXSwgWy03Ny43ODgwMiwgMjYuOTI1MTZdLCBbLTc3Ljc5LCAyNy4wNF0sIFstNzcsIDI2LjU5XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJCSFMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlRoZSBCYWhhbWFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOS4zNjgwMywgNDQuODYzXSwgWzE5LjExNzYxLCA0NC40MjMwN10sIFsxOS41OTk3NiwgNDQuMDM4NDddLCBbMTkuNDU0LCA0My41NjgxXSwgWzE5LjIxODUyLCA0My41MjM4NF0sIFsxOS4wMzE2NSwgNDMuNDMyNTNdLCBbMTguNzA2NDgsIDQzLjIwMDExXSwgWzE4LjU2LCA0Mi42NV0sIFsxNy42NzQ5MjIsIDQzLjAyODU2M10sIFsxNy4yOTczNzMsIDQzLjQ0NjM0MV0sIFsxNi45MTYxNTYsIDQzLjY2NzcyMl0sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjIzOTY2LCA0NC4zNTExNDNdLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTcuODYxNzgzLCA0NS4wNjc3NF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE5LjAwNTQ4NiwgNDQuODYwMjM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCSUgiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvc25pYSBhbmQgSGVyemVnb3ZpbmEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIzLjQ4NDEyOCwgNTMuOTEyNDk4XSwgWzI0LjQ1MDY4NCwgNTMuOTA1NzAyXSwgWzI1LjUzNjM1NCwgNTQuMjgyNDIzXSwgWzI1Ljc2ODQzMywgNTQuODQ2OTYzXSwgWzI2LjU4ODI3OSwgNTUuMTY3MTc2XSwgWzI2LjQ5NDMzMSwgNTUuNjE1MTA3XSwgWzI3LjEwMjQ2LCA1NS43ODMzMTRdLCBbMjguMTc2NzA5LCA1Ni4xNjkxM10sIFsyOS4yMjk1MTMsIDU1LjkxODM0NF0sIFsyOS4zNzE1NzIsIDU1LjY3MDA5MV0sIFsyOS44OTYyOTQsIDU1Ljc4OTQ2M10sIFszMC44NzM5MDksIDU1LjU1MDk3Nl0sIFszMC45NzE4MzYsIDU1LjA4MTU0OF0sIFszMC43NTc1MzQsIDU0LjgxMTc3MV0sIFszMS4zODQ0NzIsIDU0LjE1NzA1Nl0sIFszMS43OTE0MjQsIDUzLjk3NDYzOV0sIFszMS43MzEyNzMsIDUzLjc5NDAyOV0sIFszMi40MDU1OTksIDUzLjYxODA0NV0sIFszMi42OTM2NDMsIDUzLjM1MTQyMV0sIFszMi4zMDQ1MTksIDUzLjEzMjcyNl0sIFszMS40OTc2NDQsIDUzLjE2NzQyN10sIFszMS4zMDUyMDEsIDUzLjA3Mzk5Nl0sIFszMS41NDAwMTgsIDUyLjc0MjA1Ml0sIFszMS43ODU5OTgsIDUyLjEwMTY3OF0sIFszMC45Mjc1NDksIDUyLjA0MjM1M10sIFszMC42MTk0NTQsIDUxLjgyMjgwNl0sIFszMC41NTUxMTcsIDUxLjMxOTUwM10sIFszMC4xNTczNjQsIDUxLjQxNjEzOF0sIFsyOS4yNTQ5MzgsIDUxLjM2ODIzNF0sIFsyOC45OTI4MzUsIDUxLjYwMjA0NF0sIFsyOC42MTc2MTMsIDUxLjQyNzcxNF0sIFsyOC4yNDE2MTUsIDUxLjU3MjIyN10sIFsyNy40NTQwNjYsIDUxLjU5MjMwM10sIFsyNi4zMzc5NTksIDUxLjgzMjI4OV0sIFsyNS4zMjc3ODgsIDUxLjkxMDY1Nl0sIFsyNC41NTMxMDYsIDUxLjg4ODQ2MV0sIFsyNC4wMDUwNzgsIDUxLjYxNzQ0NF0sIFsyMy41MjcwNzEsIDUxLjU3ODQ1NF0sIFsyMy41MDgwMDIsIDUyLjAyMzY0N10sIFsyMy4xOTk0OTQsIDUyLjQ4Njk3N10sIFsyMy43OTkxOTksIDUyLjY5MTA5OV0sIFsyMy44MDQ5MzUsIDUzLjA4OTczMV0sIFsyMy41Mjc1MzYsIDUzLjQ3MDEyMl0sIFsyMy40ODQxMjgsIDUzLjkxMjQ5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxhcnVzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODkuMTQzMDgsIDE3LjgwODMxOV0sIFstODkuMTUwOTA5LCAxNy45NTU0NjhdLCBbLTg5LjAyOTg1NywgMTguMDAxNTExXSwgWy04OC44NDgzNDQsIDE3Ljg4MzE5OF0sIFstODguNDkwMTIzLCAxOC40ODY4MzFdLCBbLTg4LjMwMDAzMSwgMTguNDk5OTgyXSwgWy04OC4yOTYzMzYsIDE4LjM1MzI3M10sIFstODguMTA2ODEzLCAxOC4zNDg2NzRdLCBbLTg4LjEyMzQ3OSwgMTguMDc2Njc1XSwgWy04OC4yODUzNTUsIDE3LjY0NDE0M10sIFstODguMTk3ODY3LCAxNy40ODk0NzVdLCBbLTg4LjMwMjY0MSwgMTcuMTMxNjk0XSwgWy04OC4yMzk1MTgsIDE3LjAzNjA2Nl0sIFstODguMzU1NDI4LCAxNi41MzA3NzRdLCBbLTg4LjU1MTgyNSwgMTYuMjY1NDY3XSwgWy04OC43MzI0MzQsIDE2LjIzMzYzNV0sIFstODguOTMwNjEzLCAxNS44ODcyNzNdLCBbLTg5LjIyOTEyMiwgMTUuODg2OTM4XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMTQzMDgsIDE3LjgwODMxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxaIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxpemUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYzLjk4NjgzOCwgLTIxLjk5MzY0NF0sIFstNjQuMzc3MDIxLCAtMjIuNzk4MDkxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY3LjgyODE4LCAtMjIuODcyOTE5XSwgWy02OC4yMTk5MTMsIC0yMS40OTQzNDddLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguNDQyMjI1LCAtMTkuNDA1MDY4XSwgWy02OC45NjY4MTgsIC0xOC45ODE2ODNdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjkuNTkwNDI0LCAtMTcuNTgwMDEyXSwgWy02OC45NTk2MzUsIC0xNi41MDA2OThdLCBbLTY5LjM4OTc2NCwgLTE1LjY2MDEyOV0sIFstNjkuMTYwMzQ3LCAtMTUuMzIzOTc0XSwgWy02OS4zMzk1MzUsIC0xNC45NTMxOTVdLCBbLTY4Ljk0ODg4NywgLTE0LjQ1MzYzOV0sIFstNjguOTI5MjI0LCAtMTMuNjAyNjg0XSwgWy02OC44ODAwOCwgLTEyLjg5OTcyOV0sIFstNjguNjY1MDgsIC0xMi41NjEzXSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4LjA0ODE5MiwgLTEwLjcxMjA1OV0sIFstNjcuMTczODAxLCAtMTAuMzA2ODEyXSwgWy02Ni42NDY5MDgsIC05LjkzMTMzMV0sIFstNjUuMzM4NDM1LCAtOS43NjE5ODhdLCBbLTY1LjQ0NDgzNywgLTEwLjUxMTQ1MV0sIFstNjUuMzIxODk5LCAtMTAuODk1ODcyXSwgWy02NS40MDIyODEsIC0xMS41NjYyN10sIFstNjQuMzE2MzUzLCAtMTIuNDYxOTc4XSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYxLjcxMzIwNCwgLTEzLjQ4OTIwMl0sIFstNjEuMDg0MTIxLCAtMTMuNDc5Mzg0XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYwLjQ1OTE5OCwgLTE0LjM1NDAwN10sIFstNjAuMjY0MzI2LCAtMTQuNjQ1OTc5XSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4xNTgzOSwgLTE2LjI1ODI4NF0sIFstNTguMjQxMjIsIC0xNi4yOTk1NzNdLCBbLTU4LjM4ODA1OCwgLTE2Ljg3NzEwOV0sIFstNTguMjgwODA0LCAtMTcuMjcxNzFdLCBbLTU3LjczNDU1OCwgLTE3LjU1MjQ2OF0sIFstNTcuNDk4MzcxLCAtMTguMTc0MTg4XSwgWy01Ny42NzYwMDksIC0xOC45NjE4NF0sIFstNTcuOTQ5OTk3LCAtMTkuNDAwMDA0XSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU4LjE2NjM5MiwgLTIwLjE3NjcwMV0sIFstNTguMTgzNDcxLCAtMTkuODY4Mzk5XSwgWy01OS4xMTUwNDIsIC0xOS4zNTY5MDZdLCBbLTYwLjA0MzU2NSwgLTE5LjM0Mjc0N10sIFstNjEuNzg2MzI2LCAtMTkuNjMzNzM3XSwgWy02Mi4yNjU5NjEsIC0yMC41MTM3MzVdLCBbLTYyLjI5MTE3OSwgLTIxLjA1MTYzNV0sIFstNjIuNjg1MDU3LCAtMjIuMjQ5MDI5XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJPTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQm9saXZpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTYuMjkwOSwgLTI4Ljg1Mjc2MV0sIFstNTUuMTYyMjg2LCAtMjcuODgxOTE1XSwgWy01NC40OTA3MjUsIC0yNy40NzQ3NTddLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTMuNjI4MzQ5LCAtMjYuMTI0ODY1XSwgWy01NC4xMzAwNSwgLTI1LjU0NzYzOV0sIFstNTQuNjI1MjkxLCAtMjUuNzM5MjU1XSwgWy01NC40Mjg5NDYsIC0yNS4xNjIxODVdLCBbLTU0LjI5MzQ3NiwgLTI0LjU3MDhdLCBbLTU0LjI5Mjk2LCAtMjQuMDIxMDE0XSwgWy01NC42NTI4MzQsIC0yMy44Mzk1NzhdLCBbLTU1LjAyNzkwMiwgLTI0LjAwMTI3NF0sIFstNTUuNDAwNzQ3LCAtMjMuOTU2OTM1XSwgWy01NS41MTc2MzksIC0yMy41NzE5OThdLCBbLTU1LjYxMDY4MywgLTIyLjY1NTYxOV0sIFstNTUuNzk3OTU4LCAtMjIuMzU2OTNdLCBbLTU2LjQ3MzMxNywgLTIyLjA4NjNdLCBbLTU2Ljg4MTUxLCAtMjIuMjgyMTU0XSwgWy01Ny45MzcxNTYsIC0yMi4wOTAxNzZdLCBbLTU3Ljg3MDY3NCwgLTIwLjczMjY4OF0sIFstNTguMTY2MzkyLCAtMjAuMTc2NzAxXSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU3Ljk0OTk5NywgLTE5LjQwMDAwNF0sIFstNTcuNjc2MDA5LCAtMTguOTYxODRdLCBbLTU3LjQ5ODM3MSwgLTE4LjE3NDE4OF0sIFstNTcuNzM0NTU4LCAtMTcuNTUyNDY4XSwgWy01OC4yODA4MDQsIC0xNy4yNzE3MV0sIFstNTguMzg4MDU4LCAtMTYuODc3MTA5XSwgWy01OC4yNDEyMiwgLTE2LjI5OTU3M10sIFstNjAuMTU4MzksIC0xNi4yNTgyODRdLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjI2NDMyNiwgLTE0LjY0NTk3OV0sIFstNjAuNDU5MTk4LCAtMTQuMzU0MDA3XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYxLjA4NDEyMSwgLTEzLjQ3OTM4NF0sIFstNjEuNzEzMjA0LCAtMTMuNDg5MjAyXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTY0LjMxNjM1MywgLTEyLjQ2MTk3OF0sIFstNjUuNDAyMjgxLCAtMTEuNTY2MjddLCBbLTY1LjMyMTg5OSwgLTEwLjg5NTg3Ml0sIFstNjUuNDQ0ODM3LCAtMTAuNTExNDUxXSwgWy02NS4zMzg0MzUsIC05Ljc2MTk4OF0sIFstNjYuNjQ2OTA4LCAtOS45MzEzMzFdLCBbLTY3LjE3MzgwMSwgLTEwLjMwNjgxMl0sIFstNjguMDQ4MTkyLCAtMTAuNzEyMDU5XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTcwLjA5Mzc1MiwgLTExLjEyMzk3Ml0sIFstNzAuNTQ4Njg2LCAtMTEuMDA5MTQ3XSwgWy03MC40ODE4OTQsIC05LjQ5MDExOF0sIFstNzEuMzAyNDEyLCAtMTAuMDc5NDM2XSwgWy03Mi4xODQ4OTEsIC0xMC4wNTM1OThdLCBbLTcyLjU2MzAzMywgLTkuNTIwMTk0XSwgWy03My4yMjY3MTMsIC05LjQ2MjIxM10sIFstNzMuMDE1MzgzLCAtOS4wMzI4MzNdLCBbLTczLjU3MTA1OSwgLTguNDI0NDQ3XSwgWy03My45ODcyMzUsIC03LjUyMzgzXSwgWy03My43MjM0MDEsIC03LjM0MDk5OV0sIFstNzMuNzI0NDg3LCAtNi45MTg1OTVdLCBbLTczLjEyMDAyNywgLTYuNjI5OTMxXSwgWy03My4yMTk3MTEsIC02LjA4OTE4OV0sIFstNzIuOTY0NTA3LCAtNS43NDEyNTFdLCBbLTcyLjg5MTkyOCwgLTUuMjc0NTYxXSwgWy03MS43NDg0MDYsIC00LjU5Mzk4M10sIFstNzAuOTI4ODQzLCAtNC40MDE1OTFdLCBbLTcwLjc5NDc2OSwgLTQuMjUxMjY1XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNjkuNDQ0MTAyLCAtMS41NTYyODddLCBbLTY5LjQyMDQ4NiwgLTEuMTIyNjE5XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNzAuMDIwNjU2LCAtMC4xODUxNTZdLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY3LjUzNzgxLCAyLjAzNzE2M10sIFstNjcuMjU5OTk4LCAxLjcxOTk5OV0sIFstNjcuMDY1MDQ4LCAxLjEzMDExMl0sIFstNjYuODc2MzI2LCAxLjI1MzM2MV0sIFstNjYuMzI1NzY1LCAwLjcyNDQ1Ml0sIFstNjUuNTQ4MjY3LCAwLjc4OTI1NF0sIFstNjUuMzU0NzEzLCAxLjA5NTI4Ml0sIFstNjQuNjExMDEyLCAxLjMyODczMV0sIFstNjQuMTk5MzA2LCAxLjQ5Mjg1NV0sIFstNjQuMDgzMDg1LCAxLjkxNjM2OV0sIFstNjMuMzY4Nzg4LCAyLjIwMDldLCBbLTYzLjQyMjg2NywgMi40MTEwNjhdLCBbLTY0LjI2OTk5OSwgMi40OTcwMDZdLCBbLTY0LjQwODgyOCwgMy4xMjY3ODZdLCBbLTY0LjM2ODQ5NCwgMy43OTcyMV0sIFstNjQuODE2MDY0LCA0LjA1NjQ0NV0sIFstNjQuNjI4NjU5LCA0LjE0ODQ4MV0sIFstNjMuODg4MzQzLCA0LjAyMDUzXSwgWy02My4wOTMxOTgsIDMuNzcwNTcxXSwgWy02Mi44MDQ1MzMsIDQuMDA2OTY1XSwgWy02Mi4wODU0MywgNC4xNjIxMjRdLCBbLTYwLjk2Njg5MywgNC41MzY0NjhdLCBbLTYwLjYwMTE3OSwgNC45MTgwOThdLCBbLTYwLjczMzU3NCwgNS4yMDAyNzddLCBbLTYwLjIxMzY4MywgNS4yNDQ0ODZdLCBbLTU5Ljk4MDk1OSwgNS4wMTQwNjFdLCBbLTYwLjExMTAwMiwgNC41NzQ5NjddLCBbLTU5Ljc2NzQwNiwgNC40MjM1MDNdLCBbLTU5LjUzODA0LCAzLjk1ODgwM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuNzE4NTQ2LCAyLjI0OTYzXSwgWy01OS42NDYwNDQsIDEuNzg2ODk0XSwgWy01OS4wMzA4NjIsIDEuMzE3Njk4XSwgWy01OC41NDAwMTMsIDEuMjY4MDg4XSwgWy01OC40Mjk0NzcsIDEuNDYzOTQyXSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU3LjY2MDk3MSwgMS42ODI1ODVdLCBbLTU3LjMzNTgyMywgMS45NDg1MzhdLCBbLTU2Ljc4MjcwNCwgMS44NjM3MTFdLCBbLTU2LjUzOTM4NiwgMS44OTk1MjNdLCBbLTU1Ljk5NTY5OCwgMS44MTc2NjddLCBbLTU1LjkwNTYsIDIuMDIxOTk2XSwgWy01Ni4wNzMzNDIsIDIuMjIwNzk1XSwgWy01NS45NzMzMjIsIDIuNTEwMzY0XSwgWy01NS41Njk3NTUsIDIuNDIxNTA2XSwgWy01NS4wOTc1ODcsIDIuNTIzNzQ4XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi4yNDkzMzgsIDMuMjQxMDk0XSwgWy01MS42NTc3OTcsIDQuMTU2MjMyXSwgWy01MS4zMTcxNDYsIDQuMjAzNDkxXSwgWy01MS4wNjk3NzEsIDMuNjUwMzk4XSwgWy01MC41MDg4NzUsIDEuOTAxNTY0XSwgWy00OS45NzQwNzYsIDEuNzM2NDgzXSwgWy00OS45NDcxMDEsIDEuMDQ2MTldLCBbLTUwLjY5OTI1MSwgMC4yMjI5ODRdLCBbLTUwLjM4ODIxMSwgLTAuMDc4NDQ1XSwgWy00OC42MjA1NjcsIC0wLjIzNTQ4OV0sIFstNDguNTg0NDk3LCAtMS4yMzc4MDVdLCBbLTQ3LjgyNDk1NiwgLTAuNTgxNjE4XSwgWy00Ni41NjY1ODQsIC0wLjk0MTAyOF0sIFstNDQuOTA1NzAzLCAtMS41NTE3NF0sIFstNDQuNDE3NjE5LCAtMi4xMzc3NV0sIFstNDQuNTgxNTg5LCAtMi42OTEzMDhdLCBbLTQzLjQxODc5MSwgLTIuMzgzMTFdLCBbLTQxLjQ3MjY1NywgLTIuOTEyMDE4XSwgWy0zOS45Nzg2NjUsIC0yLjg3MzA1NF0sIFstMzguNTAwMzgzLCAtMy43MDA2NTJdLCBbLTM3LjIyMzI1MiwgLTQuODIwOTQ2XSwgWy0zNi40NTI5MzcsIC01LjEwOTQwNF0sIFstMzUuNTk3Nzk2LCAtNS4xNDk1MDRdLCBbLTM1LjIzNTM4OSwgLTUuNDY0OTM3XSwgWy0zNC44OTYwMywgLTYuNzM4MTkzXSwgWy0zNC43Mjk5OTMsIC03LjM0MzIyMV0sIFstMzUuMTI4MjEyLCAtOC45OTY0MDFdLCBbLTM1LjYzNjk2NywgLTkuNjQ5MjgyXSwgWy0zNy4wNDY1MTksIC0xMS4wNDA3MjFdLCBbLTM3LjY4MzYxMiwgLTEyLjE3MTE5NV0sIFstMzguNDIzODc3LCAtMTMuMDM4MTE5XSwgWy0zOC42NzM4ODcsIC0xMy4wNTc2NTJdLCBbLTM4Ljk1MzI3NiwgLTEzLjc5MzM3XSwgWy0zOC44ODIyOTgsIC0xNS42NjcwNTRdLCBbLTM5LjE2MTA5MiwgLTE3LjIwODQwN10sIFstMzkuMjY3MzM5LCAtMTcuODY3NzQ2XSwgWy0zOS41ODM1MjEsIC0xOC4yNjIyOTZdLCBbLTM5Ljc2MDgyMywgLTE5LjU5OTExM10sIFstNDAuNzc0NzQxLCAtMjAuOTA0NTEyXSwgWy00MC45NDQ3NTYsIC0yMS45MzczMTddLCBbLTQxLjc1NDE2NCwgLTIyLjM3MDY3Nl0sIFstNDEuOTg4Mjg0LCAtMjIuOTcwMDddLCBbLTQzLjA3NDcwNCwgLTIyLjk2NzY5M10sIFstNDQuNjQ3ODEyLCAtMjMuMzUxOTU5XSwgWy00NS4zNTIxMzYsIC0yMy43OTY4NDJdLCBbLTQ2LjQ3MjA5MywgLTI0LjA4ODk2OV0sIFstNDcuNjQ4OTcyLCAtMjQuODg1MTk5XSwgWy00OC40OTU0NTgsIC0yNS44NzcwMjVdLCBbLTQ4LjY0MTAwNSwgLTI2LjYyMzY5OF0sIFstNDguNDc0NzM2LCAtMjcuMTc1OTEyXSwgWy00OC42NjE1MiwgLTI4LjE4NjEzNV0sIFstNDguODg4NDU3LCAtMjguNjc0MTE1XSwgWy00OS41ODczMjksIC0yOS4yMjQ0NjldLCBbLTUwLjY5Njg3NCwgLTMwLjk4NDQ2NV0sIFstNTEuNTc2MjI2LCAtMzEuNzc3Njk4XSwgWy01Mi4yNTYwODEsIC0zMi4yNDUzN10sIFstNTIuNzEyMSwgLTMzLjE5NjU3OF0sIFstNTMuMzczNjYyLCAtMzMuNzY4Mzc4XSwgWy01My42NTA1NDQsIC0zMy4yMDIwMDRdLCBbLTUzLjIwOTU4OSwgLTMyLjcyNzY2Nl0sIFstNTMuNzg3OTUyLCAtMzIuMDQ3MjQzXSwgWy01NC41NzI0NTIsIC0zMS40OTQ1MTFdLCBbLTU1LjYwMTUxLCAtMzAuODUzODc5XSwgWy01NS45NzMyNDUsIC0zMC44ODMwNzZdLCBbLTU2Ljk3NjAyNiwgLTMwLjEwOTY4Nl0sIFstNTcuNjI1MTMzLCAtMzAuMjE2Mjk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCUkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJyYXppbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTE0LjIwNDAxNywgNC41MjU4NzRdLCBbMTE0LjU5OTk2MSwgNC45MDAwMTFdLCBbMTE1LjQ1MDcxLCA1LjQ0NzczXSwgWzExNS40MDU3LCA0Ljk1NTIyOF0sIFsxMTUuMzQ3NDYxLCA0LjMxNjYzNl0sIFsxMTQuODY5NTU3LCA0LjM0ODMxNF0sIFsxMTQuNjU5NTk2LCA0LjAwNzYzN10sIFsxMTQuMjA0MDE3LCA0LjUyNTg3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlJOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCcnVuZWkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkxLjY5NjY1NywgMjcuNzcxNzQyXSwgWzkyLjEwMzcxMiwgMjcuNDUyNjE0XSwgWzkyLjAzMzQ4NCwgMjYuODM4MzFdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODkuNDc1ODEsIDI4LjA0Mjc1OV0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlROIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCaHV0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI1LjY0OTE2MywgLTE4LjUzNjAyNl0sIFsyNS44NTAzOTEsIC0xOC43MTQ0MTNdLCBbMjYuMTY0NzkxLCAtMTkuMjkzMDg2XSwgWzI3LjI5NjUwNSwgLTIwLjM5MTUyXSwgWzI3LjcyNDc0NywgLTIwLjQ5OTA1OV0sIFsyNy43MjcyMjgsIC0yMC44NTE4MDJdLCBbMjguMDIxMzcsIC0yMS40ODU5NzVdLCBbMjguNzk0NjU2LCAtMjEuNjM5NDU0XSwgWzI5LjQzMjE4OCwgLTIyLjA5MTMxM10sIFsyOC4wMTcyMzYsIC0yMi44Mjc3NTRdLCBbMjcuMTE5NDEsIC0yMy41NzQzMjNdLCBbMjYuNzg2NDA3LCAtMjQuMjQwNjkxXSwgWzI2LjQ4NTc1MywgLTI0LjYxNjMyN10sIFsyNS45NDE2NTIsIC0yNC42OTYzNzNdLCBbMjUuNzY1ODQ5LCAtMjUuMTc0ODQ1XSwgWzI1LjY2NDY2NiwgLTI1LjQ4NjgxNl0sIFsyNS4wMjUxNzEsIC0yNS43MTk2N10sIFsyNC4yMTEyNjcsIC0yNS42NzAyMTZdLCBbMjMuNzMzNTcsIC0yNS4zOTAxMjldLCBbMjMuMzEyMDk3LCAtMjUuMjY4NjldLCBbMjIuODI0MjcxLCAtMjUuNTAwNDU5XSwgWzIyLjU3OTUzMiwgLTI1Ljk3OTQ0OF0sIFsyMi4xMDU5NjksIC0yNi4yODAyNTZdLCBbMjEuNjA1ODk2LCAtMjYuNzI2NTM0XSwgWzIwLjg4OTYwOSwgLTI2LjgyODU0M10sIFsyMC42NjY0NywgLTI2LjQ3NzQ1M10sIFsyMC43NTg2MDksIC0yNS44NjgxMzZdLCBbMjAuMTY1NzI2LCAtMjQuOTE3OTYyXSwgWzE5Ljg5NTc2OCwgLTI0Ljc2Nzc5XSwgWzE5Ljg5NTQ1OCwgLTIxLjg0OTE1N10sIFsyMC44ODExMzQsIC0yMS44MTQzMjddLCBbMjAuOTEwNjQxLCAtMTguMjUyMjE5XSwgWzIxLjY1NTA0LCAtMTguMjE5MTQ2XSwgWzIzLjE5Njg1OCwgLTE3Ljg2OTAzOF0sIFsyMy41NzkwMDYsIC0xOC4yODEyNjFdLCBbMjQuMjE3MzY1LCAtMTcuODg5MzQ3XSwgWzI0LjUyMDcwNSwgLTE3Ljg4NzEyNV0sIFsyNS4wODQ0NDMsIC0xNy42NjE4MTZdLCBbMjUuMjY0MjI2LCAtMTcuNzM2NTRdLCBbMjUuNjQ5MTYzLCAtMTguNTM2MDI2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCV0EiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvdHN3YW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNS4yNzk0NiwgNy40MjE5MjVdLCBbMTYuMTA2MjMyLCA3LjQ5NzA4OF0sIFsxNi4yOTA1NjIsIDcuNzU0MzA3XSwgWzE2LjQ1NjE4NSwgNy43MzQ3NzRdLCBbMTYuNzA1OTg4LCA3LjUwODMyOF0sIFsxNy45NjQ5MywgNy44OTA5MTRdLCBbMTguMzg5NTU1LCA4LjI4MTMwNF0sIFsxOC45MTEwMjIsIDguNjMwODk1XSwgWzE4LjgxMjAxLCA4Ljk4MjkxNV0sIFsxOS4wOTQwMDgsIDkuMDc0ODQ3XSwgWzIwLjA1OTY4NSwgOS4wMTI3MDZdLCBbMjEuMDAwODY4LCA5LjQ3NTk4NV0sIFsyMS43MjM4MjIsIDEwLjU2NzA1Nl0sIFsyMi4yMzExMjksIDEwLjk3MTg4OV0sIFsyMi44NjQxNjUsIDExLjE0MjM5NV0sIFsyMi45Nzc1NDQsIDEwLjcxNDQ2M10sIFsyMy41NTQzMDQsIDEwLjA4OTI1NV0sIFsyMy41NTcyNSwgOS42ODEyMThdLCBbMjMuMzk0Nzc5LCA5LjI2NTA2OF0sIFsyMy40NTkwMTMsIDguOTU0Mjg2XSwgWzIzLjgwNTgxMywgOC42NjYzMTldLCBbMjQuNTY3MzY5LCA4LjIyOTE4OF0sIFsyNS4xMTQ5MzIsIDcuODI1MTA0XSwgWzI1LjEyNDEzMSwgNy41MDAwODVdLCBbMjUuNzk2NjQ4LCA2Ljk3OTMxNl0sIFsyNi4yMTM0MTgsIDYuNTQ2NjAzXSwgWzI2LjQ2NTkwOSwgNS45NDY3MTddLCBbMjcuMjEzNDA5LCA1LjU1MDk1M10sIFsyNy4zNzQyMjYsIDUuMjMzOTQ0XSwgWzI3LjA0NDA2NSwgNS4xMjc4NTNdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNS42NTA0NTUsIDUuMjU2MDg4XSwgWzI1LjI3ODc5OCwgNS4xNzA0MDhdLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNC44MDUwMjksIDQuODk3MjQ3XSwgWzI0LjQxMDUzMSwgNS4xMDg3ODRdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMC45Mjc1OTEsIDQuMzIyNzg2XSwgWzIwLjI5MDY3OSwgNC42OTE2NzhdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsxOC45MzIzMTIsIDQuNzA5NTA2XSwgWzE4LjU0Mjk4MiwgNC4yMDE3ODVdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxNy44MDk5LCAzLjU2MDE5Nl0sIFsxNy4xMzMwNDIsIDMuNzI4MTk3XSwgWzE2LjUzNzA1OCwgMy4xOTgyNTVdLCBbMTYuMDEyODUyLCAyLjI2NzY0XSwgWzE1LjkwNzM4MSwgMi41NTczODldLCBbMTUuODYyNzMyLCAzLjAxMzUzN10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE0LjQ3ODM3MiwgNC43MzI2MDVdLCBbMTQuNTU4OTM2LCA1LjAzMDU5OF0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ0FGIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNjMuNjY0NSwgNDYuNTUwMDFdLCBbLTYyLjkzOTMsIDQ2LjQxNTg3XSwgWy02Mi4wMTIwOCwgNDYuNDQzMTRdLCBbLTYyLjUwMzkxLCA0Ni4wMzMzOV0sIFstNjIuODc0MzMsIDQ1Ljk2ODE4XSwgWy02NC4xNDI4LCA0Ni4zOTI2NV0sIFstNjQuMzkyNjEsIDQ2LjcyNzQ3XSwgWy02NC4wMTQ4NiwgNDcuMDM2MDFdLCBbLTYzLjY2NDUsIDQ2LjU1MDAxXV1dLCBbW1stNjEuODA2MzA1LCA0OS4xMDUwNl0sIFstNjIuMjkzMTgsIDQ5LjA4NzE3XSwgWy02My41ODkyNiwgNDkuNDAwNjldLCBbLTY0LjUxOTEyLCA0OS44NzMwNF0sIFstNjQuMTczMjIsIDQ5Ljk1NzE4XSwgWy02Mi44NTgyOSwgNDkuNzA2NDFdLCBbLTYxLjgzNTU4NSwgNDkuMjg4NTVdLCBbLTYxLjgwNjMwNSwgNDkuMTA1MDZdXV0sIFtbWy0xMjMuNTEwMDAyLCA0OC41MTAwMTFdLCBbLTEyNC4wMTI4OTEsIDQ4LjM3MDg0Nl0sIFstMTI1LjY1NTAxMywgNDguODI1MDA1XSwgWy0xMjUuOTU0OTk0LCA0OS4xNzk5OTZdLCBbLTEyNi44NTAwMDQsIDQ5LjUzXSwgWy0xMjcuMDI5OTkzLCA0OS44MTQ5OTZdLCBbLTEyOC4wNTkzMzYsIDQ5Ljk5NDk1OV0sIFstMTI4LjQ0NDU4NCwgNTAuNTM5MTM4XSwgWy0xMjguMzU4NDE0LCA1MC43NzA2NDhdLCBbLTEyNy4zMDg1ODEsIDUwLjU1MjU3NF0sIFstMTI2LjY5NTAwMSwgNTAuNDAwOTAzXSwgWy0xMjUuNzU1MDA3LCA1MC4yOTUwMThdLCBbLTEyNS40MTUwMDIsIDQ5Ljk1MDAwMV0sIFstMTI0LjkyMDc2OCwgNDkuNDc1Mjc1XSwgWy0xMjMuOTIyNTA5LCA0OS4wNjI0ODRdLCBbLTEyMy41MTAwMDIsIDQ4LjUxMDAxMV1dXSwgW1tbLTU2LjEzNDAzNiwgNTAuNjg3MDFdLCBbLTU2Ljc5NTg4MiwgNDkuODEyMzA5XSwgWy01Ni4xNDMxMDUsIDUwLjE1MDExN10sIFstNTUuNDcxNDkyLCA0OS45MzU4MTVdLCBbLTU1LjgyMjQwMSwgNDkuNTg3MTI5XSwgWy01NC45MzUxNDMsIDQ5LjMxMzAxMV0sIFstNTQuNDczNzc1LCA0OS41NTY2OTFdLCBbLTUzLjQ3NjU0OSwgNDkuMjQ5MTM5XSwgWy01My43ODYwMTQsIDQ4LjUxNjc4MV0sIFstNTMuMDg2MTM0LCA0OC42ODc4MDRdLCBbLTUyLjk1ODY0OCwgNDguMTU3MTY0XSwgWy01Mi42NDgwOTksIDQ3LjUzNTU0OF0sIFstNTMuMDY5MTU4LCA0Ni42NTU0OTldLCBbLTUzLjUyMTQ1NiwgNDYuNjE4MjkyXSwgWy01NC4xNzg5MzYsIDQ2LjgwNzA2Nl0sIFstNTMuOTYxODY5LCA0Ny42MjUyMDddLCBbLTU0LjI0MDQ4MiwgNDcuNzUyMjc5XSwgWy01NS40MDA3NzMsIDQ2Ljg4NDk5NF0sIFstNTUuOTk3NDgxLCA0Ni45MTk3Ml0sIFstNTUuMjkxMjE5LCA0Ny4zODk1NjJdLCBbLTU2LjI1MDc5OSwgNDcuNjMyNTQ1XSwgWy01Ny4zMjUyMjksIDQ3LjU3MjgwN10sIFstNTkuMjY2MDE1LCA0Ny42MDMzNDhdLCBbLTU5LjQxOTQ5NCwgNDcuODk5NDU0XSwgWy01OC43OTY1ODYsIDQ4LjI1MTUyNV0sIFstNTkuMjMxNjI1LCA0OC41MjMxODhdLCBbLTU4LjM5MTgwNSwgNDkuMTI1NTgxXSwgWy01Ny4zNTg2OSwgNTAuNzE4Mjc0XSwgWy01Ni43Mzg2NSwgNTEuMjg3NDM4XSwgWy01NS44NzA5NzcsIDUxLjYzMjA5NF0sIFstNTUuNDA2OTc0LCA1MS41ODgyNzNdLCBbLTU1LjYwMDIxOCwgNTEuMzE3MDc1XSwgWy01Ni4xMzQwMzYsIDUwLjY4NzAxXV1dLCBbW1stMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzIuNzEwMDA5LCA1NC4wNDAwMDldLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV0sIFstMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzEuNzQ5OTksIDU0LjEyMDAwNF0sIFstMTMyLjA0OTQ4LCA1Mi45ODQ2MjFdLCBbLTEzMS4xNzkwNDMsIDUyLjE4MDQzM10sIFstMTMxLjU3NzgzLCA1Mi4xODIzNzFdLCBbLTEzMi4xODA0MjgsIDUyLjYzOTcwN10sIFstMTMyLjU0OTk5MiwgNTMuMTAwMDE1XSwgWy0xMzMuMDU0NjExLCA1My40MTE0NjldLCBbLTEzMy4yMzk2NjQsIDUzLjg1MTA4XSwgWy0xMzMuMTgwMDA0LCA1NC4xNjk5NzVdLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV1dXSwgW1tbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdLCBbLTc5LjY1NzUyLCA2MS42MzMwOF0sIFstODAuMDk5NTYsIDYxLjcxODFdLCBbLTgwLjM2MjE1LCA2Mi4wMTY0OV0sIFstODAuMzE1Mzk1LCA2Mi4wODU1NjVdLCBbLTc5LjkyOTM5LCA2Mi4zODU2XSwgWy03OS41MjAwMiwgNjIuMzYzNzFdLCBbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdXV0sIFtbWy04MS44OTgyNSwgNjIuNzEwOF0sIFstODMuMDY4NTcsIDYyLjE1OTIyXSwgWy04My43NzQ2MiwgNjIuMTgyMzFdLCBbLTgzLjk5MzY3LCA2Mi40NTI4XSwgWy04My4yNTA0OCwgNjIuOTE0MDldLCBbLTgxLjg3Njk5LCA2Mi45MDQ1OF0sIFstODEuODk4MjUsIDYyLjcxMDhdXV0sIFtbWy04NS4xNjEzMDgsIDY1LjY1NzI4NV0sIFstODQuOTc1NzY0LCA2NS4yMTc1MThdLCBbLTg0LjQ2NDAxMiwgNjUuMzcxNzcyXSwgWy04My44ODI2MjYsIDY1LjEwOTYxOF0sIFstODIuNzg3NTc3LCA2NC43NjY2OTNdLCBbLTgxLjY0MjAxNCwgNjQuNDU1MTM2XSwgWy04MS41NTM0NCwgNjMuOTc5NjA5XSwgWy04MC44MTczNjEsIDY0LjA1NzQ4Nl0sIFstODAuMTAzNDUxLCA2My43MjU5ODFdLCBbLTgwLjk5MTAyLCA2My40MTEyNDZdLCBbLTgyLjU0NzE3OCwgNjMuNjUxNzIyXSwgWy04My4xMDg3OTgsIDY0LjEwMTg3Nl0sIFstODQuMTAwNDE3LCA2My41Njk3MTJdLCBbLTg1LjUyMzQwNSwgNjMuMDUyMzc5XSwgWy04NS44NjY3NjksIDYzLjYzNzI1M10sIFstODcuMjIxOTgzLCA2My41NDEyMzhdLCBbLTg2LjM1Mjc2LCA2NC4wMzU4MzNdLCBbLTg2LjIyNDg4NiwgNjQuODIyOTE3XSwgWy04NS44ODM4NDgsIDY1LjczODc3OF0sIFstODUuMTYxMzA4LCA2NS42NTcyODVdXV0sIFtbWy03NS44NjU4OCwgNjcuMTQ4ODZdLCBbLTc2Ljk4Njg3LCA2Ny4wOTg3M10sIFstNzcuMjM2NCwgNjcuNTg4MDldLCBbLTc2LjgxMTY2LCA2OC4xNDg1Nl0sIFstNzUuODk1MjEsIDY4LjI4NzIxXSwgWy03NS4xMTQ1LCA2OC4wMTAzNl0sIFstNzUuMTAzMzMsIDY3LjU4MjAyXSwgWy03NS4yMTU5NywgNjcuNDQ0MjVdLCBbLTc1Ljg2NTg4LCA2Ny4xNDg4Nl1dXSwgW1tbLTk1LjY0NzY4MSwgNjkuMTA3NjldLCBbLTk2LjI2OTUyMSwgNjguNzU3MDRdLCBbLTk3LjYxNzQwMSwgNjkuMDYwMDNdLCBbLTk4LjQzMTgwMSwgNjguOTUwN10sIFstOTkuNzk3NDAxLCA2OS40MDAwM10sIFstOTguOTE3NDAxLCA2OS43MTAwM10sIFstOTguMjE4MjYxLCA3MC4xNDM1NF0sIFstOTcuMTU3NDAxLCA2OS44NjAwM10sIFstOTYuNTU3NDAxLCA2OS42ODAwM10sIFstOTYuMjU3NDAxLCA2OS40OTAwM10sIFstOTUuNjQ3NjgxLCA2OS4xMDc2OV1dXSwgW1tbLTkwLjU0NzEsIDY5LjQ5NzY2XSwgWy05MC41NTE1MSwgNjguNDc0OTldLCBbLTg5LjIxNTE1LCA2OS4yNTg3M10sIFstODguMDE5NjYsIDY4LjYxNTA4XSwgWy04OC4zMTc0OSwgNjcuODczMzhdLCBbLTg3LjM1MDE3LCA2Ny4xOTg3Ml0sIFstODYuMzA2MDcsIDY3LjkyMTQ2XSwgWy04NS41NzY2NCwgNjguNzg0NTZdLCBbLTg1LjUyMTk3LCA2OS44ODIxMV0sIFstODQuMTAwODEsIDY5LjgwNTM5XSwgWy04Mi42MjI1OCwgNjkuNjU4MjZdLCBbLTgxLjI4MDQzLCA2OS4xNjIwMl0sIFstODEuMjIwMiwgNjguNjY1NjddLCBbLTgxLjk2NDM2LCA2OC4xMzI1M10sIFstODEuMjU5MjgsIDY3LjU5NzE2XSwgWy04MS4zODY1MywgNjcuMTEwNzhdLCBbLTgzLjM0NDU2LCA2Ni40MTE1NF0sIFstODQuNzM1NDIsIDY2LjI1NzNdLCBbLTg1Ljc2OTQzLCA2Ni41NTgzM10sIFstODYuMDY3NiwgNjYuMDU2MjVdLCBbLTg3LjAzMTQzLCA2NS4yMTI5N10sIFstODcuMzIzMjQsIDY0Ljc3NTYzXSwgWy04OC40ODI5NiwgNjQuMDk4OTddLCBbLTg5LjkxNDQ0LCA2NC4wMzI3M10sIFstOTAuNzAzOTgsIDYzLjYxMDE3XSwgWy05MC43NzAwNCwgNjIuOTYwMjFdLCBbLTkxLjkzMzQyLCA2Mi44MzUwOF0sIFstOTMuMTU2OTgsIDYyLjAyNDY5XSwgWy05NC4yNDE1MywgNjAuODk4NjVdLCBbLTk0LjYyOTMxLCA2MC4xMTAyMV0sIFstOTQuNjg0NiwgNTguOTQ4ODJdLCBbLTkzLjIxNTAyLCA1OC43ODIxMl0sIFstOTIuNzY0NjIsIDU3Ljg0NTcxXSwgWy05Mi4yOTcwMywgNTcuMDg3MDldLCBbLTkwLjg5NzY5LCA1Ny4yODQ2OF0sIFstODkuMDM5NTMsIDU2Ljg1MTcyXSwgWy04OC4wMzk3OCwgNTYuNDcxNjJdLCBbLTg3LjMyNDIxLCA1NS45OTkxNF0sIFstODYuMDcxMjEsIDU1LjcyMzgzXSwgWy04NS4wMTE4MSwgNTUuMzAyNl0sIFstODMuMzYwNTUsIDU1LjI0NDg5XSwgWy04Mi4yNzI4NSwgNTUuMTQ4MzJdLCBbLTgyLjQzNjIsIDU0LjI4MjI3XSwgWy04Mi4xMjUwMiwgNTMuMjc3MDNdLCBbLTgxLjQwMDc1LCA1Mi4xNTc4OF0sIFstNzkuOTEyODksIDUxLjIwODQyXSwgWy03OS4xNDMwMSwgNTEuNTMzOTNdLCBbLTc4LjYwMTkxLCA1Mi41NjIwOF0sIFstNzkuMTI0MjEsIDU0LjE0MTQ1XSwgWy03OS44Mjk1OCwgNTQuNjY3NzJdLCBbLTc4LjIyODc0LCA1NS4xMzY0NV0sIFstNzcuMDk1NiwgNTUuODM3NDFdLCBbLTc2LjU0MTM3LCA1Ni41MzQyM10sIFstNzYuNjIzMTksIDU3LjIwMjYzXSwgWy03Ny4zMDIyNiwgNTguMDUyMDldLCBbLTc4LjUxNjg4LCA1OC44MDQ1OF0sIFstNzcuMzM2NzYsIDU5Ljg1MjYxXSwgWy03Ny43NzI3MiwgNjAuNzU3ODhdLCBbLTc4LjEwNjg3LCA2Mi4zMTk2NF0sIFstNzcuNDEwNjcsIDYyLjU1MDUzXSwgWy03NS42OTYyMSwgNjIuMjc4NF0sIFstNzQuNjY4MiwgNjIuMTgxMTFdLCBbLTczLjgzOTg4LCA2Mi40NDM4XSwgWy03Mi45MDg1MywgNjIuMTA1MDddLCBbLTcxLjY3NzA4LCA2MS41MjUzNV0sIFstNzEuMzczNjksIDYxLjEzNzE3XSwgWy02OS41OTA0MiwgNjEuMDYxNDFdLCBbLTY5LjYyMDMzLCA2MC4yMjEyNV0sIFstNjkuMjg3OSwgNTguOTU3MzZdLCBbLTY4LjM3NDU1LCA1OC44MDEwNl0sIFstNjcuNjQ5NzYsIDU4LjIxMjA2XSwgWy02Ni4yMDE3OCwgNTguNzY3MzFdLCBbLTY1LjI0NTE3LCA1OS44NzA3MV0sIFstNjQuNTgzNTIsIDYwLjMzNTU4XSwgWy02My44MDQ3NSwgNTkuNDQyNl0sIFstNjIuNTAyMzYsIDU4LjE2NzA4XSwgWy02MS4zOTY1NSwgNTYuOTY3NDVdLCBbLTYxLjc5ODY2LCA1Ni4zMzk0NV0sIFstNjAuNDY4NTMsIDU1Ljc3NTQ4XSwgWy01OS41Njk2MiwgNTUuMjA0MDddLCBbLTU3Ljk3NTA4LCA1NC45NDU0OV0sIFstNTcuMzMzMiwgNTQuNjI2NV0sIFstNTYuOTM2ODksIDUzLjc4MDMyXSwgWy01Ni4xNTgxMSwgNTMuNjQ3NDldLCBbLTU1Ljc1NjMyLCA1My4yNzAzNl0sIFstNTUuNjgzMzgsIDUyLjE0NjY0XSwgWy01Ni40MDkxNiwgNTEuNzcwN10sIFstNTcuMTI2OTEsIDUxLjQxOTcyXSwgWy01OC43NzQ4MiwgNTEuMDY0M10sIFstNjAuMDMzMDksIDUwLjI0Mjc3XSwgWy02MS43MjM2NiwgNTAuMDgwNDZdLCBbLTYzLjg2MjUxLCA1MC4yOTA5OV0sIFstNjUuMzYzMzEsIDUwLjI5ODJdLCBbLTY2LjM5OTA1LCA1MC4yMjg5N10sIFstNjcuMjM2MzEsIDQ5LjUxMTU2XSwgWy02OC41MTExNCwgNDkuMDY4MzZdLCBbLTY5Ljk1MzYyLCA0Ny43NDQ4OF0sIFstNzEuMTA0NTgsIDQ2LjgyMTcxXSwgWy03MC4yNTUyMiwgNDYuOTg2MDZdLCBbLTY4LjY1LCA0OC4zXSwgWy02Ni41NTI0MywgNDkuMTMzMV0sIFstNjUuMDU2MjYsIDQ5LjIzMjc4XSwgWy02NC4xNzA5OSwgNDguNzQyNDhdLCBbLTY1LjExNTQ1LCA0OC4wNzA4NV0sIFstNjQuNzk4NTQsIDQ2Ljk5Mjk3XSwgWy02NC40NzIxOSwgNDYuMjM4NDldLCBbLTYzLjE3MzI5LCA0NS43MzkwMl0sIFstNjEuNTIwNzIsIDQ1Ljg4Mzc3XSwgWy02MC41MTgxNSwgNDcuMDA3OTNdLCBbLTYwLjQ0ODYsIDQ2LjI4MjY0XSwgWy01OS44MDI4NywgNDUuOTIwNF0sIFstNjEuMDM5ODgsIDQ1LjI2NTI1XSwgWy02My4yNTQ3MSwgNDQuNjcwMTRdLCBbLTY0LjI0NjU2LCA0NC4yNjU1M10sIFstNjUuMzY0MDYsIDQzLjU0NTIzXSwgWy02Ni4xMjM0LCA0My42MTg2N10sIFstNjYuMTYxNzMsIDQ0LjQ2NTEyXSwgWy02NC40MjU0OSwgNDUuMjkyMDRdLCBbLTY2LjAyNjA1LCA0NS4yNTkzMV0sIFstNjcuMTM3NDEsIDQ1LjEzNzUzXSwgWy02Ny43OTEzNCwgNDUuNzAyODFdLCBbLTY3Ljc5MDQ2LCA0Ny4wNjYzNl0sIFstNjguMjM0NDQsIDQ3LjM1NDg2XSwgWy02OC45MDUsIDQ3LjE4NV0sIFstNjkuMjM3MjE2LCA0Ny40NDc3ODFdLCBbLTY5Ljk5OTk3LCA0Ni42OTMwN10sIFstNzAuMzA1LCA0NS45MTVdLCBbLTcwLjY2LCA0NS40Nl0sIFstNzEuMDg0ODIsIDQ1LjMwNTI0XSwgWy03MS40MDUsIDQ1LjI1NV0sIFstNzEuNTA1MDYsIDQ1LjAwODJdLCBbLTczLjM0NzgzLCA0NS4wMDczOF0sIFstNzQuODY3LCA0NS4wMDA0OF0sIFstNzUuMzE4MjEsIDQ0LjgxNjQ1XSwgWy03Ni4zNzUsIDQ0LjA5NjMxXSwgWy03Ni41LCA0NC4wMTg0NTldLCBbLTc2LjgyMDAzNCwgNDMuNjI4Nzg0XSwgWy03Ny43Mzc4ODUsIDQzLjYyOTA1Nl0sIFstNzguNzIwMjgsIDQzLjYyNTA4OV0sIFstNzkuMTcxNjc0LCA0My40NjYzMzldLCBbLTc5LjAxLCA0My4yN10sIFstNzguOTIsIDQyLjk2NV0sIFstNzguOTM5MzYyLCA0Mi44NjM2MTFdLCBbLTgwLjI0NzQ0OCwgNDIuMzY2Ml0sIFstODEuMjc3NzQ3LCA0Mi4yMDkwMjZdLCBbLTgyLjQzOTI3OCwgNDEuNjc1MTA1XSwgWy04Mi42OTAwODksIDQxLjY3NTEwNV0sIFstODMuMDI5ODEsIDQxLjgzMjc5Nl0sIFstODMuMTQyLCA0MS45NzU2ODFdLCBbLTgzLjEyLCA0Mi4wOF0sIFstODIuOSwgNDIuNDNdLCBbLTgyLjQzLCA0Mi45OF0sIFstODIuMTM3NjQyLCA0My41NzEwODhdLCBbLTgyLjMzNzc2MywgNDQuNDRdLCBbLTgyLjU1MDkyNSwgNDUuMzQ3NTE3XSwgWy04My41OTI4NTEsIDQ1LjgxNjg5NF0sIFstODMuNDY5NTUxLCA0NS45OTQ2ODZdLCBbLTgzLjYxNjEzMSwgNDYuMTE2OTI3XSwgWy04My44OTA3NjUsIDQ2LjExNjkyN10sIFstODQuMDkxODUxLCA0Ni4yNzU0MTldLCBbLTg0LjE0MjEyLCA0Ni41MTIyMjZdLCBbLTg0LjMzNjcsIDQ2LjQwODc3XSwgWy04NC42MDQ5LCA0Ni40Mzk2XSwgWy04NC41NDM3NDksIDQ2LjUzODY4NF0sIFstODQuNzc5MjM4LCA0Ni42MzcxMDJdLCBbLTg0Ljg3NjA4LCA0Ni45MDAwODNdLCBbLTg1LjY1MjM2MywgNDcuMjIwMjE5XSwgWy04Ni40NjE5OTEsIDQ3LjU1MzMzOF0sIFstODcuNDM5NzkzLCA0Ny45NF0sIFstODguMzc4MTE0LCA0OC4zMDI5MThdLCBbLTg5LjI3MjkxNywgNDguMDE5ODA4XSwgWy04OS42LCA0OC4wMV0sIFstOTAuODMsIDQ4LjI3XSwgWy05MS42NCwgNDguMTRdLCBbLTkyLjYxLCA0OC40NV0sIFstOTMuNjMwODcsIDQ4LjYwOTI2XSwgWy05NC4zMjkxNCwgNDguNjcwNzRdLCBbLTk0LjY0LCA0OC44NF0sIFstOTQuODE3NTgsIDQ5LjM4OTA1XSwgWy05NS4xNTYwOSwgNDkuMzg0MjVdLCBbLTk1LjE1OTA3LCA0OV0sIFstOTcuMjI4NzIsIDQ5LjAwMDddLCBbLTEwMC42NSwgNDldLCBbLTEwNC4wNDgyNiwgNDguOTk5ODZdLCBbLTEwNy4wNSwgNDldLCBbLTExMC4wNSwgNDldLCBbLTExMywgNDldLCBbLTExNi4wNDgxOCwgNDldLCBbLTExNy4wMzEyMSwgNDldLCBbLTEyMCwgNDldLCBbLTEyMi44NCwgNDldLCBbLTEyMi45NzQyMSwgNDkuMDAyNTM4XSwgWy0xMjQuOTEwMjQsIDQ5Ljk4NDU2XSwgWy0xMjUuNjI0NjEsIDUwLjQxNjU2XSwgWy0xMjcuNDM1NjEsIDUwLjgzMDYxXSwgWy0xMjcuOTkyNzYsIDUxLjcxNTgzXSwgWy0xMjcuODUwMzIsIDUyLjMyOTYxXSwgWy0xMjkuMTI5NzksIDUyLjc1NTM4XSwgWy0xMjkuMzA1MjMsIDUzLjU2MTU5XSwgWy0xMzAuNTE0OTcsIDU0LjI4NzU3XSwgWy0xMzAuNTM2MTEsIDU0LjgwMjc4XSwgWy0xMjkuOTgsIDU1LjI4NV0sIFstMTMwLjAwNzc4LCA1NS45MTU4M10sIFstMTMxLjcwNzgxLCA1Ni41NTIxMl0sIFstMTMyLjczMDQyLCA1Ny42OTI4OV0sIFstMTMzLjM1NTU2LCA1OC40MTAyOF0sIFstMTM0LjI3MTExLCA1OC44NjExMV0sIFstMTM0Ljk0NSwgNTkuMjcwNTZdLCBbLTEzNS40NzU4MywgNTkuNzg3NzhdLCBbLTEzNi40Nzk3MiwgNTkuNDYzODldLCBbLTEzNy40NTI1LCA1OC45MDVdLCBbLTEzOC4zNDA4OSwgNTkuNTYyMTFdLCBbLTEzOS4wMzksIDYwXSwgWy0xNDAuMDEzLCA2MC4yNzY4Ml0sIFstMTQwLjk5Nzc4LCA2MC4zMDYzOV0sIFstMTQwLjk5MjUsIDY2LjAwMDAzXSwgWy0xNDAuOTg2LCA2OS43MTJdLCBbLTEzOS4xMjA1MiwgNjkuNDcxMDJdLCBbLTEzNy41NDYzNiwgNjguOTkwMDJdLCBbLTEzNi41MDM1OCwgNjguODk4MDRdLCBbLTEzNS42MjU3NiwgNjkuMzE1MTJdLCBbLTEzNC40MTQ2NCwgNjkuNjI3NDNdLCBbLTEzMi45MjkyNSwgNjkuNTA1MzRdLCBbLTEzMS40MzEzNiwgNjkuOTQ0NTFdLCBbLTEyOS43OTQ3MSwgNzAuMTkzNjldLCBbLTEyOS4xMDc3MywgNjkuNzc5MjddLCBbLTEyOC4zNjE1NiwgNzAuMDEyODZdLCBbLTEyOC4xMzgxNywgNzAuNDgzODRdLCBbLTEyNy40NDcxMiwgNzAuMzc3MjFdLCBbLTEyNS43NTYzMiwgNjkuNDgwNThdLCBbLTEyNC40MjQ4MywgNzAuMTU4NF0sIFstMTI0LjI4OTY4LCA2OS4zOTk2OV0sIFstMTIzLjA2MTA4LCA2OS41NjM3Ml0sIFstMTIyLjY4MzUsIDY5Ljg1NTUzXSwgWy0xMjEuNDcyMjYsIDY5Ljc5Nzc4XSwgWy0xMTkuOTQyODgsIDY5LjM3Nzg2XSwgWy0xMTcuNjAyNjgsIDY5LjAxMTI4XSwgWy0xMTYuMjI2NDMsIDY4Ljg0MTUxXSwgWy0xMTUuMjQ2OSwgNjguOTA1OTFdLCBbLTExMy44OTc5NCwgNjguMzk4OV0sIFstMTE1LjMwNDg5LCA2Ny45MDI2MV0sIFstMTEzLjQ5NzI3LCA2Ny42ODgxNV0sIFstMTEwLjc5OCwgNjcuODA2MTJdLCBbLTEwOS45NDYxOSwgNjcuOTgxMDRdLCBbLTEwOC44ODAyLCA2Ny4zODE0NF0sIFstMTA3Ljc5MjM5LCA2Ny44ODczNl0sIFstMTA4LjgxMjk5LCA2OC4zMTE2NF0sIFstMTA4LjE2NzIxLCA2OC42NTM5Ml0sIFstMTA2Ljk1LCA2OC43XSwgWy0xMDYuMTUsIDY4LjhdLCBbLTEwNS4zNDI4MiwgNjguNTYxMjJdLCBbLTEwNC4zMzc5MSwgNjguMDE4XSwgWy0xMDMuMjIxMTUsIDY4LjA5Nzc1XSwgWy0xMDEuNDU0MzMsIDY3LjY0Njg5XSwgWy05OS45MDE5NSwgNjcuODA1NjZdLCBbLTk4LjQ0MzIsIDY3Ljc4MTY1XSwgWy05OC41NTg2LCA2OC40MDM5NF0sIFstOTcuNjY5NDgsIDY4LjU3ODY0XSwgWy05Ni4xMTk5MSwgNjguMjM5MzldLCBbLTk2LjEyNTg4LCA2Ny4yOTMzOF0sIFstOTUuNDg5NDMsIDY4LjA5MDddLCBbLTk0LjY4NSwgNjguMDYzODNdLCBbLTk0LjIzMjgyLCA2OS4wNjkwM10sIFstOTUuMzA0MDgsIDY5LjY4NTcxXSwgWy05Ni40NzEzMSwgNzAuMDg5NzZdLCBbLTk2LjM5MTE1LCA3MS4xOTQ4Ml0sIFstOTUuMjA4OCwgNzEuOTIwNTNdLCBbLTkzLjg4OTk3LCA3MS43NjAxNV0sIFstOTIuODc4MTgsIDcxLjMxODY5XSwgWy05MS41MTk2NCwgNzAuMTkxMjldLCBbLTkyLjQwNjkyLCA2OS42OTk5N10sIFstOTAuNTQ3MSwgNjkuNDk3NjZdXV0sIFtbWy0xMTQuMTY3MTcsIDczLjEyMTQ1XSwgWy0xMTQuNjY2MzQsIDcyLjY1Mjc3XSwgWy0xMTIuNDQxMDIsIDcyLjk1NTRdLCBbLTExMS4wNTAzOSwgNzIuNDUwNF0sIFstMTA5LjkyMDM1LCA3Mi45NjExM10sIFstMTA5LjAwNjU0LCA3Mi42MzMzNV0sIFstMTA4LjE4ODM1LCA3MS42NTA4OV0sIFstMTA3LjY4NTk5LCA3Mi4wNjU0OF0sIFstMTA4LjM5NjM5LCA3My4wODk1M10sIFstMTA3LjUxNjQ1LCA3My4yMzU5OF0sIFstMTA2LjUyMjU5LCA3My4wNzYwMV0sIFstMTA1LjQwMjQ2LCA3Mi42NzI1OV0sIFstMTA0Ljc3NDg0LCA3MS42OTg0XSwgWy0xMDQuNDY0NzYsIDcwLjk5Mjk3XSwgWy0xMDIuNzg1MzcsIDcwLjQ5Nzc2XSwgWy0xMDAuOTgwNzgsIDcwLjAyNDMyXSwgWy0xMDEuMDg5MjksIDY5LjU4NDQ3XSwgWy0xMDIuNzMxMTYsIDY5LjUwNDAyXSwgWy0xMDIuMDkzMjksIDY5LjExOTYyXSwgWy0xMDIuNDMwMjQsIDY4Ljc1MjgyXSwgWy0xMDQuMjQsIDY4LjkxXSwgWy0xMDUuOTYsIDY5LjE4XSwgWy0xMDcuMTIyNTQsIDY5LjExOTIyXSwgWy0xMDksIDY4Ljc4XSwgWy0xMTEuNTM0MTQ5LCA2OC42MzAwNTldLCBbLTExMy4zMTMyLCA2OC41MzU1NF0sIFstMTEzLjg1NDk2LCA2OS4wMDc0NF0sIFstMTE1LjIyLCA2OS4yOF0sIFstMTE2LjEwNzk0LCA2OS4xNjgyMV0sIFstMTE3LjM0LCA2OS45Nl0sIFstMTE2LjY3NDczLCA3MC4wNjY1NV0sIFstMTE1LjEzMTEyLCA3MC4yMzczXSwgWy0xMTMuNzIxNDEsIDcwLjE5MjM3XSwgWy0xMTIuNDE2MSwgNzAuMzY2MzhdLCBbLTExNC4zNSwgNzAuNl0sIFstMTE2LjQ4Njg0LCA3MC41MjA0NV0sIFstMTE3LjkwNDgsIDcwLjU0MDU2XSwgWy0xMTguNDMyMzgsIDcwLjkwOTJdLCBbLTExNi4xMTMxMSwgNzEuMzA5MThdLCBbLTExNy42NTU2OCwgNzEuMjk1Ml0sIFstMTE5LjQwMTk5LCA3MS41NTg1OV0sIFstMTE4LjU2MjY3LCA3Mi4zMDc4NV0sIFstMTE3Ljg2NjQyLCA3Mi43MDU5NF0sIFstMTE1LjE4OTA5LCA3My4zMTQ1OV0sIFstMTE0LjE2NzE3LCA3My4xMjE0NV1dXSwgW1tbLTEwNC41LCA3My40Ml0sIFstMTA1LjM4LCA3Mi43Nl0sIFstMTA2Ljk0LCA3My40Nl0sIFstMTA2LjYsIDczLjZdLCBbLTEwNS4yNiwgNzMuNjRdLCBbLTEwNC41LCA3My40Ml1dXSwgW1tbLTc2LjM0LCA3My4xMDI2ODVdLCBbLTc2LjI1MTQwNCwgNzIuODI2Mzg1XSwgWy03Ny4zMTQ0MzgsIDcyLjg1NTU0NV0sIFstNzguMzkxNjcsIDcyLjg3NjY1Nl0sIFstNzkuNDg2MjUyLCA3Mi43NDIyMDNdLCBbLTc5Ljc3NTgzMywgNzIuODAyOTAyXSwgWy04MC44NzYwOTksIDczLjMzMzE4M10sIFstODAuODMzODg1LCA3My42OTMxODRdLCBbLTgwLjM1MzA1OCwgNzMuNzU5NzJdLCBbLTc4LjA2NDQzOCwgNzMuNjUxOTMyXSwgWy03Ni4zNCwgNzMuMTAyNjg1XV1dLCBbW1stODYuNTYyMTc5LCA3My4xNTc0NDddLCBbLTg1Ljc3NDM3MSwgNzIuNTM0MTI2XSwgWy04NC44NTAxMTIsIDczLjM0MDI3OF0sIFstODIuMzE1NTksIDczLjc1MDk1MV0sIFstODAuNjAwMDg4LCA3Mi43MTY1NDRdLCBbLTgwLjc0ODk0MiwgNzIuMDYxOTA3XSwgWy03OC43NzA2MzksIDcyLjM1MjE3M10sIFstNzcuODI0NjI0LCA3Mi43NDk2MTddLCBbLTc1LjYwNTg0NSwgNzIuMjQzNjc4XSwgWy03NC4yMjg2MTYsIDcxLjc2NzE0NF0sIFstNzQuMDk5MTQxLCA3MS4zMzA4NF0sIFstNzIuMjQyMjI2LCA3MS41NTY5MjVdLCBbLTcxLjIwMDAxNSwgNzAuOTIwMDEzXSwgWy02OC43ODYwNTQsIDcwLjUyNTAyNF0sIFstNjcuOTE0OTcsIDcwLjEyMTk0OF0sIFstNjYuOTY5MDMzLCA2OS4xODYwODddLCBbLTY4LjgwNTEyMywgNjguNzIwMTk4XSwgWy02Ni40NDk4NjYsIDY4LjA2NzE2M10sIFstNjQuODYyMzE0LCA2Ny44NDc1MzldLCBbLTYzLjQyNDkzNCwgNjYuOTI4NDczXSwgWy02MS44NTE5ODEsIDY2Ljg2MjEyMV0sIFstNjIuMTYzMTc3LCA2Ni4xNjAyNTFdLCBbLTYzLjkxODQ0NCwgNjQuOTk4NjY5XSwgWy02NS4xNDg4NiwgNjUuNDI2MDMzXSwgWy02Ni43MjEyMTksIDY2LjM4ODA0MV0sIFstNjguMDE1MDE2LCA2Ni4yNjI3MjZdLCBbLTY4LjE0MTI4NywgNjUuNjg5Nzg5XSwgWy02Ny4wODk2NDYsIDY1LjEwODQ1NV0sIFstNjUuNzMyMDgsIDY0LjY0ODQwNl0sIFstNjUuMzIwMTY4LCA2NC4zODI3MzddLCBbLTY0LjY2OTQwNiwgNjMuMzkyOTI3XSwgWy02NS4wMTM4MDQsIDYyLjY3NDE4NV0sIFstNjYuMjc1MDQ1LCA2Mi45NDUwOTldLCBbLTY4Ljc4MzE4NiwgNjMuNzQ1NjddLCBbLTY3LjM2OTY4MSwgNjIuODgzOTY2XSwgWy02Ni4zMjgyOTcsIDYyLjI4MDA3NV0sIFstNjYuMTY1NTY4LCA2MS45MzA4OTddLCBbLTY4Ljg3NzM2NywgNjIuMzMwMTQ5XSwgWy03MS4wMjM0MzcsIDYyLjkxMDcwOF0sIFstNzIuMjM1Mzc5LCA2My4zOTc4MzZdLCBbLTcxLjg4NjI3OCwgNjMuNjc5OTg5XSwgWy03My4zNzgzMDYsIDY0LjE5Mzk2M10sIFstNzQuODM0NDE5LCA2NC42NzkwNzZdLCBbLTc0LjgxODUwMywgNjQuMzg5MDkzXSwgWy03Ny43MDk5OCwgNjQuMjI5NTQyXSwgWy03OC41NTU5NDksIDY0LjU3MjkwNl0sIFstNzcuODk3MjgxLCA2NS4zMDkxOTJdLCBbLTc2LjAxODI3NCwgNjUuMzI2OTY5XSwgWy03My45NTk3OTUsIDY1LjQ1NDc2NV0sIFstNzQuMjkzODgzLCA2NS44MTE3NzFdLCBbLTczLjk0NDkxMiwgNjYuMzEwNTc4XSwgWy03Mi42NTExNjcsIDY3LjI4NDU3Nl0sIFstNzIuOTI2MDYsIDY3LjcyNjkyNl0sIFstNzMuMzExNjE4LCA2OC4wNjk0MzddLCBbLTc0Ljg0MzMwNywgNjguNTU0NjI3XSwgWy03Ni44NjkxMDEsIDY4Ljg5NDczNl0sIFstNzYuMjI4NjQ5LCA2OS4xNDc3NjldLCBbLTc3LjI4NzM3LCA2OS43Njk1NF0sIFstNzguMTY4NjM0LCA2OS44MjY0ODhdLCBbLTc4Ljk1NzI0MiwgNzAuMTY2ODhdLCBbLTc5LjQ5MjQ1NSwgNjkuODcxODA4XSwgWy04MS4zMDU0NzEsIDY5Ljc0MzE4NV0sIFstODQuOTQ0NzA2LCA2OS45NjY2MzRdLCBbLTg3LjA2MDAwMywgNzAuMjYwMDAxXSwgWy04OC42ODE3MTMsIDcwLjQxMDc0MV0sIFstODkuNTEzNDIsIDcwLjc2MjAzOF0sIFstODguNDY3NzIxLCA3MS4yMTgxODZdLCBbLTg5Ljg4ODE1MSwgNzEuMjIyNTUyXSwgWy05MC4yMDUxNiwgNzIuMjM1MDc0XSwgWy04OS40MzY1NzcsIDczLjEyOTQ2NF0sIFstODguNDA4MjQyLCA3My41Mzc4ODldLCBbLTg1LjgyNjE1MSwgNzMuODAzODE2XSwgWy04Ni41NjIxNzksIDczLjE1NzQ0N11dXSwgW1tbLTEwMC4zNTY0MiwgNzMuODQzODldLCBbLTk5LjE2Mzg3LCA3My42MzMzOV0sIFstOTcuMzgsIDczLjc2XSwgWy05Ny4xMiwgNzMuNDddLCBbLTk4LjA1MzU5LCA3Mi45OTA1Ml0sIFstOTYuNTQsIDcyLjU2XSwgWy05Ni43MiwgNzEuNjZdLCBbLTk4LjM1OTY2LCA3MS4yNzI4NV0sIFstOTkuMzIyODYsIDcxLjM1NjM5XSwgWy0xMDAuMDE0ODIsIDcxLjczODI3XSwgWy0xMDIuNSwgNzIuNTFdLCBbLTEwMi40OCwgNzIuODNdLCBbLTEwMC40MzgzNiwgNzIuNzA1ODhdLCBbLTEwMS41NCwgNzMuMzZdLCBbLTEwMC4zNTY0MiwgNzMuODQzODldXV0sIFtbWy05My4xOTYyOTYsIDcyLjc3MTk5Ml0sIFstOTQuMjY5MDQ3LCA3Mi4wMjQ1OTZdLCBbLTk1LjQwOTg1NiwgNzIuMDYxODgxXSwgWy05Ni4wMzM3NDUsIDcyLjk0MDI3N10sIFstOTYuMDE4MjY4LCA3My40Mzc0M10sIFstOTUuNDk1NzkzLCA3My44NjI0MTddLCBbLTk0LjUwMzY1OCwgNzQuMTM0OTA3XSwgWy05Mi40MjAwMTIsIDc0LjEwMDAyNV0sIFstOTAuNTA5NzkzLCA3My44NTY3MzJdLCBbLTkyLjAwMzk2NSwgNzIuOTY2MjQ0XSwgWy05My4xOTYyOTYsIDcyLjc3MTk5Ml1dXSwgW1tbLTEyMC40NiwgNzEuMzgzNjAyXSwgWy0xMjMuMDkyMTksIDcwLjkwMTY0XSwgWy0xMjMuNjIsIDcxLjM0XSwgWy0xMjUuOTI4OTQ5LCA3MS44Njg2ODhdLCBbLTEyNS41LCA3Mi4yOTIyNjFdLCBbLTEyNC44MDcyOSwgNzMuMDIyNTZdLCBbLTEyMy45NCwgNzMuNjhdLCBbLTEyNC45MTc3NSwgNzQuMjkyNzVdLCBbLTEyMS41Mzc4OCwgNzQuNDQ4OTNdLCBbLTEyMC4xMDk3OCwgNzQuMjQxMzVdLCBbLTExNy41NTU2NCwgNzQuMTg1NzddLCBbLTExNi41ODQ0MiwgNzMuODk2MDddLCBbLTExNS41MTA4MSwgNzMuNDc1MTldLCBbLTExNi43Njc5NCwgNzMuMjIyOTJdLCBbLTExOS4yMiwgNzIuNTJdLCBbLTEyMC40NiwgNzEuODJdLCBbLTEyMC40NiwgNzEuMzgzNjAyXV1dLCBbW1stOTMuNjEyNzU2LCA3NC45Nzk5OTddLCBbLTk0LjE1NjkwOSwgNzQuNTkyMzQ3XSwgWy05NS42MDg2ODEsIDc0LjY2Njg2NF0sIFstOTYuODIwOTMyLCA3NC45Mjc2MjNdLCBbLTk2LjI4ODU4NywgNzUuMzc3ODI4XSwgWy05NC44NTA4MiwgNzUuNjQ3MjE4XSwgWy05My45Nzc3NDcsIDc1LjI5NjQ5XSwgWy05My42MTI3NTYsIDc0Ljk3OTk5N11dXSwgW1tbLTk4LjUsIDc2LjcyXSwgWy05Ny43MzU1ODUsIDc2LjI1NjU2XSwgWy05Ny43MDQ0MTUsIDc1Ljc0MzQ0XSwgWy05OC4xNiwgNzVdLCBbLTk5LjgwODc0LCA3NC44OTc0NF0sIFstMTAwLjg4MzY2LCA3NS4wNTczNl0sIFstMTAwLjg2MjkyLCA3NS42NDA3NV0sIFstMTAyLjUwMjA5LCA3NS41NjM4XSwgWy0xMDIuNTY1NTIsIDc2LjMzNjZdLCBbLTEwMS40ODk3MywgNzYuMzA1MzddLCBbLTk5Ljk4MzQ5LCA3Ni42NDYzNF0sIFstOTguNTc2OTksIDc2LjU4ODU5XSwgWy05OC41LCA3Ni43Ml1dXSwgW1tbLTEwOC4yMTE0MSwgNzYuMjAxNjhdLCBbLTEwNy44MTk0MywgNzUuODQ1NTJdLCBbLTEwNi45Mjg5MywgNzYuMDEyODJdLCBbLTEwNS44ODEsIDc1Ljk2OTRdLCBbLTEwNS43MDQ5OCwgNzUuNDc5NTFdLCBbLTEwNi4zMTM0NywgNzUuMDA1MjddLCBbLTEwOS43LCA3NC44NV0sIFstMTEyLjIyMzA3LCA3NC40MTY5Nl0sIFstMTEzLjc0MzgxLCA3NC4zOTQyN10sIFstMTEzLjg3MTM1LCA3NC43MjAyOV0sIFstMTExLjc5NDIxLCA3NS4xNjI1XSwgWy0xMTYuMzEyMjEsIDc1LjA0MzQzXSwgWy0xMTcuNzEwNCwgNzUuMjIyMl0sIFstMTE2LjM0NjAyLCA3Ni4xOTkwM10sIFstMTE1LjQwNDg3LCA3Ni40Nzg4N10sIFstMTEyLjU5MDU2LCA3Ni4xNDEzNF0sIFstMTEwLjgxNDIyLCA3NS41NDkxOV0sIFstMTA5LjA2NzEsIDc1LjQ3MzIxXSwgWy0xMTAuNDk3MjYsIDc2LjQyOTgyXSwgWy0xMDkuNTgxMSwgNzYuNzk0MTddLCBbLTEwOC41NDg1OSwgNzYuNjc4MzJdLCBbLTEwOC4yMTE0MSwgNzYuMjAxNjhdXV0sIFtbWy05NC42ODQwODYsIDc3LjA5Nzg3OF0sIFstOTMuNTczOTIxLCA3Ni43NzYyOTZdLCBbLTkxLjYwNTAyMywgNzYuNzc4NTE4XSwgWy05MC43NDE4NDYsIDc2LjQ0OTU5N10sIFstOTAuOTY5NjYxLCA3Ni4wNzQwMTNdLCBbLTg5LjgyMjIzOCwgNzUuODQ3Nzc0XSwgWy04OS4xODcwODMsIDc1LjYxMDE2Nl0sIFstODcuODM4Mjc2LCA3NS41NjYxODldLCBbLTg2LjM3OTE5MiwgNzUuNDgyNDIxXSwgWy04NC43ODk2MjUsIDc1LjY5OTIwNF0sIFstODIuNzUzNDQ1LCA3NS43ODQzMTVdLCBbLTgxLjEyODUzMSwgNzUuNzEzOTgzXSwgWy04MC4wNTc1MTEsIDc1LjMzNjg0OV0sIFstNzkuODMzOTMzLCA3NC45MjMxMjddLCBbLTgwLjQ1Nzc3MSwgNzQuNjU3MzA0XSwgWy04MS45NDg4NDMsIDc0LjQ0MjQ1OV0sIFstODMuMjI4ODk0LCA3NC41NjQwMjhdLCBbLTg2LjA5NzQ1MiwgNzQuNDEwMDMyXSwgWy04OC4xNTAzNSwgNzQuMzkyMzA3XSwgWy04OS43NjQ3MjIsIDc0LjUxNTU1NV0sIFstOTIuNDIyNDQxLCA3NC44Mzc3NThdLCBbLTkyLjc2ODI4NSwgNzUuMzg2ODJdLCBbLTkyLjg4OTkwNiwgNzUuODgyNjU1XSwgWy05My44OTM4MjQsIDc2LjMxOTI0NF0sIFstOTUuOTYyNDU3LCA3Ni40NDEzODFdLCBbLTk3LjEyMTM3OSwgNzYuNzUxMDc4XSwgWy05Ni43NDUxMjMsIDc3LjE2MTM4OV0sIFstOTQuNjg0MDg2LCA3Ny4wOTc4NzhdXV0sIFtbWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddLCBbLTExNi4zMzU4MTMsIDc2Ljg3Njk2Ml0sIFstMTE3LjEwNjA1MSwgNzYuNTMwMDMyXSwgWy0xMTguMDQwNDEyLCA3Ni40ODExNzJdLCBbLTExOS44OTkzMTgsIDc2LjA1MzIxM10sIFstMTIxLjQ5OTk5NSwgNzUuOTAwMDE5XSwgWy0xMjIuODU0OTI0LCA3Ni4xMTY1NDNdLCBbLTEyMi44NTQ5MjUsIDc2LjExNjU0M10sIFstMTIxLjE1NzUzNSwgNzYuODY0NTA4XSwgWy0xMTkuMTAzOTM5LCA3Ny41MTIyMl0sIFstMTE3LjU3MDEzMSwgNzcuNDk4MzE5XSwgWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddXV0sIFtbWy05My44NDAwMDMsIDc3LjUxOTk5N10sIFstOTQuMjk1NjA4LCA3Ny40OTEzNDNdLCBbLTk2LjE2OTY1NCwgNzcuNTU1MTExXSwgWy05Ni40MzYzMDQsIDc3LjgzNDYyOV0sIFstOTQuNDIyNTc3LCA3Ny44MjAwMDVdLCBbLTkzLjcyMDY1NiwgNzcuNjM0MzMxXSwgWy05My44NDAwMDMsIDc3LjUxOTk5N11dXSwgW1tbLTExMC4xODY5MzgsIDc3LjY5NzAxNV0sIFstMTEyLjA1MTE5MSwgNzcuNDA5MjI5XSwgWy0xMTMuNTM0Mjc5LCA3Ny43MzIyMDddLCBbLTExMi43MjQ1ODcsIDc4LjA1MTA1XSwgWy0xMTEuMjY0NDQzLCA3OC4xNTI5NTZdLCBbLTEwOS44NTQ0NTIsIDc3Ljk5NjMyNV0sIFstMTEwLjE4NjkzOCwgNzcuNjk3MDE1XV1dLCBbW1stMTA5LjY2MzE0NiwgNzguNjAxOTczXSwgWy0xMTAuODgxMzE0LCA3OC40MDY5Ml0sIFstMTEyLjU0MjA5MSwgNzguNDA3OTAyXSwgWy0xMTIuNTI1ODkxLCA3OC41NTA1NTVdLCBbLTExMS41MDAwMSwgNzguODQ5OTk0XSwgWy0xMTAuOTYzNjYxLCA3OC44MDQ0NDFdLCBbLTEwOS42NjMxNDYsIDc4LjYwMTk3M11dXSwgW1tbLTk1LjgzMDI5NSwgNzguMDU2OTQxXSwgWy05Ny4zMDk4NDMsIDc3Ljg1MDU5N10sIFstOTguMTI0Mjg5LCA3OC4wODI4NTddLCBbLTk4LjU1Mjg2OCwgNzguNDU4MTA1XSwgWy05OC42MzE5ODQsIDc4Ljg3MTkzXSwgWy05Ny4zMzcyMzEsIDc4LjgzMTk4NF0sIFstOTYuNzU0Mzk5LCA3OC43NjU4MTNdLCBbLTk1LjU1OTI3OCwgNzguNDE4MzE1XSwgWy05NS44MzAyOTUsIDc4LjA1Njk0MV1dXSwgW1tbLTEwMC4wNjAxOTIsIDc4LjMyNDc1NF0sIFstOTkuNjcwOTM5LCA3Ny45MDc1NDVdLCBbLTEwMS4zMDM5NCwgNzguMDE4OTg1XSwgWy0xMDIuOTQ5ODA5LCA3OC4zNDMyMjldLCBbLTEwNS4xNzYxMzMsIDc4LjM4MDMzMl0sIFstMTA0LjIxMDQyOSwgNzguNjc3NDJdLCBbLTEwNS40MTk1OCwgNzguOTE4MzM2XSwgWy0xMDUuNDkyMjg5LCA3OS4zMDE1OTRdLCBbLTEwMy41MjkyODIsIDc5LjE2NTM0OV0sIFstMTAwLjgyNTE1OCwgNzguODAwNDYyXSwgWy0xMDAuMDYwMTkyLCA3OC4zMjQ3NTRdXV0sIFtbWy04Ny4wMiwgNzkuNjZdLCBbLTg1LjgxNDM1LCA3OS4zMzY5XSwgWy04Ny4xODc1NiwgNzkuMDM5M10sIFstODkuMDM1MzUsIDc4LjI4NzIzXSwgWy05MC44MDQzNiwgNzguMjE1MzNdLCBbLTkyLjg3NjY5LCA3OC4zNDMzM10sIFstOTMuOTUxMTYsIDc4Ljc1MDk5XSwgWy05My45MzU3NCwgNzkuMTEzNzNdLCBbLTkzLjE0NTI0LCA3OS4zODAxXSwgWy05NC45NzQsIDc5LjM3MjQ4XSwgWy05Ni4wNzYxNCwgNzkuNzA1MDJdLCBbLTk2LjcwOTcyLCA4MC4xNTc3N10sIFstOTYuMDE2NDQsIDgwLjYwMjMzXSwgWy05NS4zMjM0NSwgODAuOTA3MjldLCBbLTk0LjI5ODQzLCA4MC45NzcyN10sIFstOTQuNzM1NDIsIDgxLjIwNjQ2XSwgWy05Mi40MDk4NCwgODEuMjU3MzldLCBbLTkxLjEzMjg5LCA4MC43MjM0NV0sIFstODkuNDUsIDgwLjUwOTMyMl0sIFstODcuODEsIDgwLjMyXSwgWy04Ny4wMiwgNzkuNjZdXV0sIFtbWy02OC41LCA4My4xMDYzMjJdLCBbLTY1LjgyNzM1LCA4My4wMjgwMV0sIFstNjMuNjgsIDgyLjldLCBbLTYxLjg1LCA4Mi42Mjg2XSwgWy02MS44OTM4OCwgODIuMzYxNjVdLCBbLTY0LjMzNCwgODEuOTI3NzVdLCBbLTY2Ljc1MzQyLCA4MS43MjUyN10sIFstNjcuNjU3NTUsIDgxLjUwMTQxXSwgWy02NS40ODAzMSwgODEuNTA2NTddLCBbLTY3Ljg0LCA4MC45XSwgWy02OS40Njk3LCA4MC42MTY4M10sIFstNzEuMTgsIDc5LjhdLCBbLTczLjI0MjgsIDc5LjYzNDE1XSwgWy03My44OCwgNzkuNDMwMTYyXSwgWy03Ni45MDc3MywgNzkuMzIzMDldLCBbLTc1LjUyOTI0LCA3OS4xOTc2Nl0sIFstNzYuMjIwNDYsIDc5LjAxOTA3XSwgWy03NS4zOTM0NSwgNzguNTI1ODFdLCBbLTc2LjM0MzU0LCA3OC4xODI5Nl0sIFstNzcuODg4NTEsIDc3Ljg5OTkxXSwgWy03OC4zNjI2OSwgNzcuNTA4NTldLCBbLTc5Ljc1OTUxLCA3Ny4yMDk2OF0sIFstNzkuNjE5NjUsIDc2Ljk4MzM2XSwgWy03Ny45MTA4OSwgNzcuMDIyMDQ1XSwgWy03Ny44ODkxMSwgNzYuNzc3OTU1XSwgWy04MC41NjEyNSwgNzYuMTc4MTJdLCBbLTgzLjE3NDM5LCA3Ni40NTQwM10sIFstODYuMTExODQsIDc2LjI5OTAxXSwgWy04Ny42LCA3Ni40Ml0sIFstODkuNDkwNjgsIDc2LjQ3MjM5XSwgWy04OS42MTYxLCA3Ni45NTIxM10sIFstODcuNzY3MzksIDc3LjE3ODMzXSwgWy04OC4yNiwgNzcuOV0sIFstODcuNjUsIDc3Ljk3MDIyMl0sIFstODQuOTc2MzQsIDc3LjUzODczXSwgWy04Ni4zNCwgNzguMThdLCBbLTg3Ljk2MTkyLCA3OC4zNzE4MV0sIFstODcuMTUxOTgsIDc4Ljc1ODY3XSwgWy04NS4zNzg2OCwgNzguOTk2OV0sIFstODUuMDk0OTUsIDc5LjM0NTQzXSwgWy04Ni41MDczNCwgNzkuNzM2MjRdLCBbLTg2LjkzMTc5LCA4MC4yNTE0NV0sIFstODQuMTk4NDQsIDgwLjIwODM2XSwgWy04My40MDg2OTYsIDgwLjFdLCBbLTgxLjg0ODIzLCA4MC40NjQ0Ml0sIFstODQuMSwgODAuNThdLCBbLTg3LjU5ODk1LCA4MC41MTYyN10sIFstODkuMzY2NjMsIDgwLjg1NTY5XSwgWy05MC4yLCA4MS4yNl0sIFstOTEuMzY3ODYsIDgxLjU1MzFdLCBbLTkxLjU4NzAyLCA4MS44OTQyOV0sIFstOTAuMSwgODIuMDg1XSwgWy04OC45MzIyNywgODIuMTE3NTFdLCBbLTg2Ljk3MDI0LCA4Mi4yNzk2MV0sIFstODUuNSwgODIuNjUyMjczXSwgWy04NC4yNjAwMDUsIDgyLjZdLCBbLTgzLjE4LCA4Mi4zMl0sIFstODIuNDIsIDgyLjg2XSwgWy04MS4xLCA4My4wMl0sIFstNzkuMzA2NjQsIDgzLjEzMDU2XSwgWy03Ni4yNSwgODMuMTcyMDU5XSwgWy03NS43MTg3OCwgODMuMDY0MDRdLCBbLTcyLjgzMTUzLCA4My4yMzMyNF0sIFstNzAuNjY1NzY1LCA4My4xNjk3ODFdLCBbLTY4LjUsIDgzLjEwNjMyMl1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0FOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW5hZGEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS42MzI5MzIsIDQ3LjM0NzYwMV0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjkzMjQ0OCwgNDYuOTIwNzI4XSwgWzEwLjQ0MjcwMSwgNDYuODkzNTQ2XSwgWzEwLjM2MzM3OCwgNDYuNDgzNTcxXSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbOS4xODI4ODIsIDQ2LjQ0MDIxNV0sIFs4Ljk2NjMwNiwgNDYuMDM2OTMyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzcuNzU1OTkyLCA0NS44MjQ0OV0sIFs3LjI3Mzg1MSwgNDUuNzc2OTQ4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi4wMjI2MDksIDQ2LjI3Mjk5XSwgWzYuMDM3Mzg5LCA0Ni43MjU3NzldLCBbNi43Njg3MTQsIDQ3LjI4NzcwOF0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzcuMTkyMjAyLCA0Ny40NDk3NjZdLCBbNy40NjY3NTksIDQ3LjYyMDU4Ml0sIFs4LjMxNzMwMSwgNDcuNjEzNThdLCBbOC41MjI2MTIsIDQ3LjgzMDgyOF0sIFs5LjU5NDIyNiwgNDcuNTI1MDU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSEUiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlN3aXR6ZXJsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTY4LjYzNDAxLCAtNTIuNjM2MzddLCBbLTY4LjYzMzM1LCAtNTQuODY5NV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuMjkxMDMsIC01NS4zMDEyNF0sIFstNjguMTQ4NjMsIC01NS42MTE4M10sIFstNjguNjM5OTkxLCAtNTUuNTgwMDE4XSwgWy02OS4yMzIxLCAtNTUuNDk5MDZdLCBbLTY5Ljk1ODA5LCAtNTUuMTk4NDNdLCBbLTcxLjAwNTY4LCAtNTUuMDUzODNdLCBbLTcyLjI2MzksIC01NC40OTUxNF0sIFstNzMuMjg1MiwgLTUzLjk1NzUyXSwgWy03NC42NjI1MywgLTUyLjgzNzQ5XSwgWy03My44MzgxLCAtNTMuMDQ3NDNdLCBbLTcyLjQzNDE4LCAtNTMuNzE1NF0sIFstNzEuMTA3NzMsIC01NC4wNzQzM10sIFstNzAuNTkxNzgsIC01My42MTU4M10sIFstNzAuMjY3NDgsIC01Mi45MzEyM10sIFstNjkuMzQ1NjUsIC01Mi41MTgzXSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XV1dLCBbW1stNjguMjE5OTEzLCAtMjEuNDk0MzQ3XSwgWy02Ny44MjgxOCwgLTIyLjg3MjkxOV0sIFstNjcuMTA2Njc0LCAtMjIuNzM1OTI1XSwgWy02Ni45ODUyMzQsIC0yMi45ODYzNDldLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjguNDE3NjUzLCAtMjQuNTE4NTU1XSwgWy02OC4zODYwMDEsIC0yNi4xODUwMTZdLCBbLTY4LjU5NDgsIC0yNi41MDY5MDldLCBbLTY4LjI5NTU0MiwgLTI2Ljg5OTM0XSwgWy02OS4wMDEyMzUsIC0yNy41MjEyMTRdLCBbLTY5LjY1NjEzLCAtMjguNDU5MTQxXSwgWy03MC4wMTM1NSwgLTI5LjM2NzkyM10sIFstNjkuOTE5MDA4LCAtMzAuMzM2MzM5XSwgWy03MC41MzUwNjksIC0zMS4zNjUwMV0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNjkuODE3MzA5LCAtMzQuMTkzNTcxXSwgWy03MC4zODgwNDksIC0zNS4xNjk2ODhdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzEuMTIxODgxLCAtMzYuNjU4MTI0XSwgWy03MS4xMTg2MjUsIC0zNy41NzY4MjddLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuNDEzNTE3LCAtMzguOTE2MDIyXSwgWy03MS42ODA3NjEsIC0zOS44MDgxNjRdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNzQ2ODA0LCAtNDIuMDUxMzg2XSwgWy03Mi4xNDg4OTgsIC00Mi4yNTQ4ODhdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzEuNDY0MDU2LCAtNDMuNzg3NjExXSwgWy03MS43OTM2MjMsIC00NC4yMDcxNzJdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuMjIyNzc5LCAtNDQuNzg0MjQzXSwgWy03MS42NTkzMTYsIC00NC45NzM2ODldLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuOTE3MjU4LCAtNDYuODg0ODM4XSwgWy03Mi40NDczNTUsIC00Ny43Mzg1MzNdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNjQ4MjQ3LCAtNDguODc4NjE4XSwgWy03My40MTU0MzYsIC00OS4zMTg0MzZdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTcyLjMwOTk3NCwgLTUwLjY3NzAxXSwgWy03Mi4zMjk0MDQsIC01MS40MjU5NTZdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNjkuNDk4MzYyLCAtNTIuMTQyNzYxXSwgWy02OC41NzE1NDUsIC01Mi4yOTk0NDRdLCBbLTY5LjQ2MTI4NCwgLTUyLjI5MTk1MV0sIFstNjkuOTQyNzgsIC01Mi41Mzc5MzFdLCBbLTcwLjg0NTEwMiwgLTUyLjg5OTIwMV0sIFstNzEuMDA2MzMyLCAtNTMuODMzMjUyXSwgWy03MS40Mjk3OTUsIC01My44NTY0NTVdLCBbLTcyLjU1Nzk0MywgLTUzLjUzMTQxXSwgWy03My43MDI3NTcsIC01Mi44MzUwNjldLCBbLTczLjcwMjc1NywgLTUyLjgzNTA3XSwgWy03NC45NDY3NjMsIC01Mi4yNjI3NTRdLCBbLTc1LjI2MDAyNiwgLTUxLjYyOTM1NV0sIFstNzQuOTc2NjMyLCAtNTEuMDQzMzk2XSwgWy03NS40Nzk3NTQsIC01MC4zNzgzNzJdLCBbLTc1LjYwODAxNSwgLTQ4LjY3Mzc3M10sIFstNzUuMTgyNzcsIC00Ny43MTE5MTldLCBbLTc0LjEyNjU4MSwgLTQ2LjkzOTI1M10sIFstNzUuNjQ0Mzk1LCAtNDYuNjQ3NjQzXSwgWy03NC42OTIxNTQsIC00NS43NjM5NzZdLCBbLTc0LjM1MTcwOSwgLTQ0LjEwMzA0NF0sIFstNzMuMjQwMzU2LCAtNDQuNDU0OTYxXSwgWy03Mi43MTc4MDQsIC00Mi4zODMzNTZdLCBbLTczLjM4ODksIC00Mi4xMTc1MzJdLCBbLTczLjcwMTMzNiwgLTQzLjM2NTc3Nl0sIFstNzQuMzMxOTQzLCAtNDMuMjI0OTU4XSwgWy03NC4wMTc5NTcsIC00MS43OTQ4MTNdLCBbLTczLjY3NzA5OSwgLTM5Ljk0MjIxM10sIFstNzMuMjE3NTkzLCAtMzkuMjU4Njg5XSwgWy03My41MDU1NTksIC0zOC4yODI4ODNdLCBbLTczLjU4ODA2MSwgLTM3LjE1NjI4NV0sIFstNzMuMTY2NzE3LCAtMzcuMTIzNzhdLCBbLTcyLjU1MzEzNywgLTM1LjUwODg0XSwgWy03MS44NjE3MzIsIC0zMy45MDkwOTNdLCBbLTcxLjQzODQ1LCAtMzIuNDE4ODk5XSwgWy03MS42Njg3MjEsIC0zMC45MjA2NDVdLCBbLTcxLjM3MDA4MywgLTMwLjA5NTY4Ml0sIFstNzEuNDg5ODk0LCAtMjguODYxNDQyXSwgWy03MC45MDUxMjQsIC0yNy42NDAzOF0sIFstNzAuNzI0OTU0LCAtMjUuNzA1OTI0XSwgWy03MC40MDM5NjYsIC0yMy42Mjg5OTddLCBbLTcwLjA5MTI0NiwgLTIxLjM5MzMxOV0sIFstNzAuMTY0NDIsIC0xOS43NTY0NjhdLCBbLTcwLjM3MjU3MiwgLTE4LjM0Nzk3NV0sIFstNjkuODU4NDQ0LCAtMTguMDkyNjk0XSwgWy02OS41OTA0MjQsIC0xNy41ODAwMTJdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjguOTY2ODE4LCAtMTguOTgxNjgzXSwgWy02OC40NDIyMjUsIC0xOS40MDUwNjhdLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguMjE5OTEzLCAtMjEuNDk0MzQ3XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJDSEwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNoaWxlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTEwLjMzOTE4OCwgMTguNjc4Mzk1XSwgWzEwOS40NzUyMSwgMTguMTk3NzAxXSwgWzEwOC42NTUyMDgsIDE4LjUwNzY4Ml0sIFsxMDguNjI2MjE3LCAxOS4zNjc4ODhdLCBbMTA5LjExOTA1NiwgMTkuODIxMDM5XSwgWzExMC4yMTE1OTksIDIwLjEwMTI1NF0sIFsxMTAuNzg2NTUxLCAyMC4wNzc1MzRdLCBbMTExLjAxMDA1MSwgMTkuNjk1OTNdLCBbMTEwLjU3MDY0NywgMTkuMjU1ODc5XSwgWzExMC4zMzkxODgsIDE4LjY3ODM5NV1dXSwgW1tbMTI3LjY1NzQwNywgNDkuNzYwMjddLCBbMTI5LjM5NzgxOCwgNDkuNDQwNl0sIFsxMzAuNTgyMjkzLCA0OC43Mjk2ODddLCBbMTMwLjk4NzI4MiwgNDcuNzkwMTMyXSwgWzEzMi41MDY2NzIsIDQ3Ljc4ODk3XSwgWzEzMy4zNzM1OTYsIDQ4LjE4MzQ0Ml0sIFsxMzUuMDI2MzExLCA0OC40NzgyM10sIFsxMzQuNTAwODE0LCA0Ny41Nzg0NF0sIFsxMzQuMTEyMzYyLCA0Ny4yMTI0NjddLCBbMTMzLjc2OTY0NCwgNDYuMTE2OTI3XSwgWzEzMy4wOTcxMjcsIDQ1LjE0NDA2Nl0sIFsxMzEuODgzNDU0LCA0NS4zMjExNjJdLCBbMTMxLjAyNTIxMiwgNDQuOTY3OTUzXSwgWzEzMS4yODg1NTUsIDQ0LjExMTUyXSwgWzEzMS4xNDQ2ODgsIDQyLjkyOTk5XSwgWzEzMC42MzM4NjYsIDQyLjkwMzAxNV0sIFsxMzAuNjQwMDE2LCA0Mi4zOTUwMDldLCBbMTI5Ljk5NDI2NywgNDIuOTg1Mzg3XSwgWzEyOS41OTY2NjksIDQyLjQyNDk4Ml0sIFsxMjguMDUyMjE1LCA0MS45OTQyODVdLCBbMTI4LjIwODQzMywgNDEuNDY2NzcyXSwgWzEyNy4zNDM3ODMsIDQxLjUwMzE1Ml0sIFsxMjYuODY5MDgzLCA0MS44MTY1NjldLCBbMTI2LjE4MjA0NSwgNDEuMTA3MzM2XSwgWzEyNS4wNzk5NDIsIDQwLjU2OTgyNF0sIFsxMjQuMjY1NjI1LCAzOS45Mjg0OTNdLCBbMTIyLjg2NzU3LCAzOS42Mzc3ODhdLCBbMTIyLjEzMTM4OCwgMzkuMTcwNDUyXSwgWzEyMS4wNTQ1NTQsIDM4Ljg5NzQ3MV0sIFsxMjEuNTg1OTk1LCAzOS4zNjA4NTRdLCBbMTIxLjM3Njc1NywgMzkuNzUwMjYxXSwgWzEyMi4xNjg1OTUsIDQwLjQyMjQ0M10sIFsxMjEuNjQwMzU5LCA0MC45NDYzOV0sIFsxMjAuNzY4NjI5LCA0MC41OTMzODhdLCBbMTE5LjYzOTYwMiwgMzkuODk4MDU2XSwgWzExOS4wMjM0NjQsIDM5LjI1MjMzM10sIFsxMTguMDQyNzQ5LCAzOS4yMDQyNzRdLCBbMTE3LjUzMjcwMiwgMzguNzM3NjM2XSwgWzExOC4wNTk2OTksIDM4LjA2MTQ3Nl0sIFsxMTguODc4MTUsIDM3Ljg5NzMyNV0sIFsxMTguOTExNjM2LCAzNy40NDg0NjRdLCBbMTE5LjcwMjgwMiwgMzcuMTU2Mzg5XSwgWzEyMC44MjM0NTcsIDM3Ljg3MDQyOF0sIFsxMjEuNzExMjU5LCAzNy40ODExMjNdLCBbMTIyLjM1NzkzNywgMzcuNDU0NDg0XSwgWzEyMi41MTk5OTUsIDM2LjkzMDYxNF0sIFsxMjEuMTA0MTY0LCAzNi42NTEzMjldLCBbMTIwLjYzNzAwOSwgMzYuMTExNDRdLCBbMTE5LjY2NDU2MiwgMzUuNjA5NzkxXSwgWzExOS4xNTEyMDgsIDM0LjkwOTg1OV0sIFsxMjAuMjI3NTI1LCAzNC4zNjAzMzJdLCBbMTIwLjYyMDM2OSwgMzMuMzc2NzIzXSwgWzEyMS4yMjkwMTQsIDMyLjQ2MDMxOV0sIFsxMjEuOTA4MTQ2LCAzMS42OTIxNzRdLCBbMTIxLjg5MTkxOSwgMzAuOTQ5MzUyXSwgWzEyMS4yNjQyNTcsIDMwLjY3NjI2N10sIFsxMjEuNTAzNTE5LCAzMC4xNDI5MTVdLCBbMTIyLjA5MjExNCwgMjkuODMyNTJdLCBbMTIxLjkzODQyOCwgMjkuMDE4MDIyXSwgWzEyMS42ODQ0MzksIDI4LjIyNTUxM10sIFsxMjEuMTI1NjYxLCAyOC4xMzU2NzNdLCBbMTIwLjM5NTQ3MywgMjcuMDUzMjA3XSwgWzExOS41ODU0OTcsIDI1Ljc0MDc4MV0sIFsxMTguNjU2ODcxLCAyNC41NDczOTFdLCBbMTE3LjI4MTYwNiwgMjMuNjI0NTAxXSwgWzExNS44OTA3MzUsIDIyLjc4Mjg3M10sIFsxMTQuNzYzODI3LCAyMi42NjgwNzRdLCBbMTE0LjE1MjU0NywgMjIuMjIzNzZdLCBbMTEzLjgwNjc4LCAyMi41NDgzNF0sIFsxMTMuMjQxMDc4LCAyMi4wNTEzNjddLCBbMTExLjg0MzU5MiwgMjEuNTUwNDk0XSwgWzExMC43ODU0NjYsIDIxLjM5NzE0NF0sIFsxMTAuNDQ0MDM5LCAyMC4zNDEwMzNdLCBbMTA5Ljg4OTg2MSwgMjAuMjgyNDU3XSwgWzEwOS42Mjc2NTUsIDIxLjAwODIyN10sIFsxMDkuODY0NDg4LCAyMS4zOTUwNTFdLCBbMTA4LjUyMjgxMywgMjEuNzE1MjEyXSwgWzEwOC4wNTAxOCwgMjEuNTUyMzhdLCBbMTA3LjA0MzQyLCAyMS44MTE4OTldLCBbMTA2LjU2NzI3MywgMjIuMjE4MjA1XSwgWzEwNi43MjU0MDMsIDIyLjc5NDI2OF0sIFsxMDUuODExMjQ3LCAyMi45NzY4OTJdLCBbMTA1LjMyOTIwOSwgMjMuMzUyMDYzXSwgWzEwNC40NzY4NTgsIDIyLjgxOTE1XSwgWzEwMy41MDQ1MTUsIDIyLjcwMzc1N10sIFsxMDIuNzA2OTkyLCAyMi43MDg3OTVdLCBbMTAyLjE3MDQzNiwgMjIuNDY0NzUzXSwgWzEwMS42NTIwMTgsIDIyLjMxODE5OV0sIFsxMDEuODAzMTIsIDIxLjE3NDM2N10sIFsxMDEuMjcwMDI2LCAyMS4yMDE2NTJdLCBbMTAxLjE4MDAwNSwgMjEuNDM2NTczXSwgWzEwMS4xNTAwMzMsIDIxLjg0OTk4NF0sIFsxMDAuNDE2NTM4LCAyMS41NTg4MzldLCBbOTkuOTgzNDg5LCAyMS43NDI5MzddLCBbOTkuMjQwODk5LCAyMi4xMTgzMTRdLCBbOTkuNTMxOTkyLCAyMi45NDkwMzldLCBbOTguODk4NzQ5LCAyMy4xNDI3MjJdLCBbOTguNjYwMjYyLCAyNC4wNjMyODZdLCBbOTcuNjA0NzIsIDIzLjg5NzQwNV0sIFs5Ny43MjQ2MDksIDI1LjA4MzYzN10sIFs5OC42NzE4MzgsIDI1LjkxODcwM10sIFs5OC43MTIwOTQsIDI2Ljc0MzUzNl0sIFs5OC42ODI2OSwgMjcuNTA4ODEyXSwgWzk4LjI0NjIzMSwgMjcuNzQ3MjIxXSwgWzk3LjkxMTk4OCwgMjguMzM1OTQ1XSwgWzk3LjMyNzExNCwgMjguMjYxNTgzXSwgWzk2LjI0ODgzMywgMjguNDExMDMxXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMTE3Njc5LCAyOS40NTI4MDJdLCBbOTUuNDA0ODAyLCAyOS4wMzE3MTddLCBbOTQuNTY1OTksIDI5LjI3NzQzOF0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs4OS40NzU4MSwgMjguMDQyNzU5XSwgWzg4LjgxNDI0OCwgMjcuMjk5MzE2XSwgWzg4LjczMDMyNiwgMjguMDg2ODY1XSwgWzg4LjEyMDQ0MSwgMjcuODc2NTQyXSwgWzg2Ljk1NDUxNywgMjcuOTc0MjYyXSwgWzg1LjgyMzMyLCAyOC4yMDM1NzZdLCBbODUuMDExNjM4LCAyOC42NDI3NzRdLCBbODQuMjM0NTgsIDI4LjgzOTg5NF0sIFs4My44OTg5OTMsIDI5LjMyMDIyNl0sIFs4My4zMzcxMTUsIDI5LjQ2MzczMl0sIFs4Mi4zMjc1MTMsIDMwLjExNTI2OF0sIFs4MS41MjU4MDQsIDMwLjQyMjcxN10sIFs4MS4xMTEyNTYsIDMwLjE4MzQ4MV0sIFs3OS43MjEzNjcsIDMwLjg4MjcxNV0sIFs3OC43Mzg4OTQsIDMxLjUxNTkwNl0sIFs3OC40NTg0NDYsIDMyLjYxODE2NF0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc5LjIwODg5MiwgMzIuOTk0Mzk1XSwgWzc4LjgxMTA4NiwgMzMuNTA2MTk4XSwgWzc4LjkxMjI2OSwgMzQuMzIxOTM2XSwgWzc3LjgzNzQ1MSwgMzUuNDk0MDFdLCBbNzYuMTkyODQ4LCAzNS44OTg0MDNdLCBbNzUuODk2ODk3LCAzNi42NjY4MDZdLCBbNzUuMTU4MDI4LCAzNy4xMzMwMzFdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NC44Mjk5ODYsIDM3Ljk5MDAwN10sIFs3NC44NjQ4MTYsIDM4LjM3ODg0Nl0sIFs3NC4yNTc1MTQsIDM4LjYwNjUwN10sIFs3My45Mjg4NTIsIDM4LjUwNTgxNV0sIFs3My42NzUzNzksIDM5LjQzMTIzN10sIFs3My45NjAwMTMsIDM5LjY2MDAwOF0sIFs3My44MjIyNDQsIDM5Ljg5Mzk3M10sIFs3NC43NzY4NjIsIDQwLjM2NjQyNV0sIFs3NS40Njc4MjgsIDQwLjU2MjA3Ml0sIFs3Ni41MjYzNjgsIDQwLjQyNzk0Nl0sIFs3Ni45MDQ0ODQsIDQxLjA2NjQ4Nl0sIFs3OC4xODcxOTcsIDQxLjE4NTMxNl0sIFs3OC41NDM2NjEsIDQxLjU4MjI0M10sIFs4MC4xMTk0MywgNDIuMTIzOTQxXSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbODAuMTgwMTUsIDQyLjkyMDA2OF0sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs4Mi40NTg5MjYsIDQ1LjUzOTY1XSwgWzgzLjE4MDQ4NCwgNDcuMzMwMDMxXSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODUuNzIwNDg0LCA0Ny40NTI5NjldLCBbODUuNzY4MjMzLCA0OC40NTU3NTFdLCBbODYuNTk4Nzc2LCA0OC41NDkxODJdLCBbODcuMzU5OTcsIDQ5LjIxNDk4MV0sIFs4Ny43NTEyNjQsIDQ5LjI5NzE5OF0sIFs4OC4wMTM4MzIsIDQ4LjU5OTQ2M10sIFs4OC44NTQyOTgsIDQ4LjA2OTA4Ml0sIFs5MC4yODA4MjYsIDQ3LjY5MzU0OV0sIFs5MC45NzA4MDksIDQ2Ljg4ODE0Nl0sIFs5MC41ODU3NjgsIDQ1LjcxOTcxNl0sIFs5MC45NDU1NCwgNDUuMjg2MDczXSwgWzkyLjEzMzg5MSwgNDUuMTE1MDc2XSwgWzkzLjQ4MDczNCwgNDQuOTc1NDcyXSwgWzk0LjY4ODkyOSwgNDQuMzUyMzMyXSwgWzk1LjMwNjg3NSwgNDQuMjQxMzMxXSwgWzk1Ljc2MjQ1NSwgNDMuMzE5NDQ5XSwgWzk2LjM0OTM5NiwgNDIuNzI1NjM1XSwgWzk3LjQ1MTc1NywgNDIuNzQ4ODldLCBbOTkuNTE1ODE3LCA0Mi41MjQ2OTFdLCBbMTAwLjg0NTg2NiwgNDIuNjYzODA0XSwgWzEwMS44MzMwNCwgNDIuNTE0ODczXSwgWzEwMy4zMTIyNzgsIDQxLjkwNzQ2OF0sIFsxMDQuNTIyMjgyLCA0MS45MDgzNDddLCBbMTA0Ljk2NDk5NCwgNDEuNTk3NDFdLCBbMTA2LjEyOTMxNiwgNDIuMTM0MzI4XSwgWzEwNy43NDQ3NzMsIDQyLjQ4MTUxNl0sIFsxMDkuMjQzNTk2LCA0Mi41MTk0NDZdLCBbMTEwLjQxMjEwMywgNDIuODcxMjM0XSwgWzExMS4xMjk2ODIsIDQzLjQwNjgzNF0sIFsxMTEuODI5NTg4LCA0My43NDMxMThdLCBbMTExLjY2NzczNywgNDQuMDczMTc2XSwgWzExMS4zNDgzNzcsIDQ0LjQ1NzQ0Ml0sIFsxMTEuODczMzA2LCA0NS4xMDIwNzldLCBbMTEyLjQzNjA2MiwgNDUuMDExNjQ2XSwgWzExMy40NjM5MDcsIDQ0LjgwODg5M10sIFsxMTQuNDYwMzMyLCA0NS4zMzk4MTddLCBbMTE1Ljk4NTA5NiwgNDUuNzI3MjM1XSwgWzExNi43MTc4NjgsIDQ2LjM4ODIwMl0sIFsxMTcuNDIxNzAxLCA0Ni42NzI3MzNdLCBbMTE4Ljg3NDMyNiwgNDYuODA1NDEyXSwgWzExOS42NjMyNywgNDYuNjkyNjhdLCBbMTE5Ljc3MjgyNCwgNDcuMDQ4MDU5XSwgWzExOC44NjY1NzQsIDQ3Ljc0NzA2XSwgWzExOC4wNjQxNDMsIDQ4LjA2NjczXSwgWzExNy4yOTU1MDcsIDQ3LjY5NzcwOV0sIFsxMTYuMzA4OTUzLCA0Ny44NTM0MV0sIFsxMTUuNzQyODM3LCA0Ny43MjY1NDVdLCBbMTE1LjQ4NTI4MiwgNDguMTM1MzgzXSwgWzExNi4xOTE4MDIsIDQ5LjEzNDU5OF0sIFsxMTYuNjc4ODAxLCA0OS44ODg1MzFdLCBbMTE3Ljg3OTI0NCwgNDkuNTEwOTgzXSwgWzExOS4yODg0NjEsIDUwLjE0Mjg4M10sIFsxMTkuMjc5MzY2LCA1MC41ODI5MDhdLCBbMTIwLjE4MjA1LCA1MS42NDM1NjZdLCBbMTIwLjczODE5MSwgNTEuOTY0MTE1XSwgWzEyMC43MjU3ODksIDUyLjUxNjIyNl0sIFsxMjAuMTc3MDg5LCA1Mi43NTM4ODZdLCBbMTIxLjAwMzA4NSwgNTMuMjUxNDAxXSwgWzEyMi4yNDU3NDgsIDUzLjQzMTcyNl0sIFsxMjMuNTcxNTA3LCA1My40NTg4MDRdLCBbMTI1LjA2ODIxMSwgNTMuMTYxMDQ1XSwgWzEyNS45NDYzNDksIDUyLjc5Mjc5OV0sIFsxMjYuNTY0Mzk5LCA1MS43ODQyNTVdLCBbMTI2LjkzOTE1NywgNTEuMzUzODk0XSwgWzEyNy4yODc0NTYsIDUwLjczOTc5N10sIFsxMjcuNjU3NDA3LCA0OS43NjAyN11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0hOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDaGluYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNiMTAwMjYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuODU2MTI1LCA0Ljk5NDQ3Nl0sIFstMy4zMTEwODQsIDQuOTg0Mjk2XSwgWy00LjAwODgyLCA1LjE3OTgxM10sIFstNC42NDk5MTcsIDUuMTY4MjY0XSwgWy01LjgzNDQ5NiwgNC45OTM3MDFdLCBbLTYuNTI4NzY5LCA0LjcwNTA4OF0sIFstNy41MTg5NDEsIDQuMzM4Mjg4XSwgWy03LjcxMjE1OSwgNC4zNjQ1NjZdLCBbLTcuNjM1MzY4LCA1LjE4ODE1OV0sIFstNy41Mzk3MTUsIDUuMzEzMzQ1XSwgWy03LjU3MDE1MywgNS43MDczNTJdLCBbLTcuOTkzNjkzLCA2LjEyNjE5XSwgWy04LjMxMTM0OCwgNi4xOTMwMzNdLCBbLTguNjAyODgsIDYuNDY3NTY0XSwgWy04LjM4NTQ1MiwgNi45MTE4MDFdLCBbLTguNDg1NDQ2LCA3LjM5NTIwOF0sIFstOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjI4MDcwMywgNy42ODcxOF0sIFstOC4yMjE3OTIsIDguMTIzMzI5XSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjAzNDk5LCA4LjQ1NTQ1M10sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4wNzkxMTQsIDkuMzc2MjI0XSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMjI5MzM3LCAxMC4xMjkwMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstNy44OTk1OSwgMTAuMjk3MzgyXSwgWy03LjYyMjc1OSwgMTAuMTQ3MjM2XSwgWy02Ljg1MDUwNywgMTAuMTM4OTk0XSwgWy02LjY2NjQ2MSwgMTAuNDMwODExXSwgWy02LjQ5Mzk2NSwgMTAuNDExMzAzXSwgWy02LjIwNTIyMywgMTAuNTI0MDYxXSwgWy02LjA1MDQ1MiwgMTAuMDk2MzYxXSwgWy01LjgxNjkyNiwgMTAuMjIyNTU1XSwgWy01LjQwNDM0MiwgMTAuMzcwNzM3XSwgWy00Ljk1NDY1MywgMTAuMTUyNzE0XSwgWy00Ljc3OTg4NCwgOS44MjE5ODVdLCBbLTQuMzMwMjQ3LCA5LjYxMDgzNV0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy0zLjUxMTg5OSwgOS45MDAzMjZdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMi44NTYxMjUsIDQuOTk0NDc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSVYiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkl2b3J5IENvYXN0IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEyLjk1MTMzNCwgMi4zMjE2MTZdLCBbMTIuMzU5MzgsIDIuMTkyODEyXSwgWzExLjc1MTY2NSwgMi4zMjY3NThdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbOS43OTUxOTYsIDMuMDczNDA0XSwgWzkuNDA0MzY3LCAzLjczNDUyN10sIFs4Ljk0ODExNiwgMy45MDQxMjldLCBbOC43NDQ5MjQsIDQuMzUyMjE1XSwgWzguNDg4ODE2LCA0LjQ5NTYxN10sIFs4LjUwMDI4OCwgNC43NzE5ODNdLCBbOC43NTc1MzMsIDUuNDc5NjY2XSwgWzkuMjMzMTYzLCA2LjQ0NDQ5MV0sIFs5LjUyMjcwNiwgNi40NTM0ODJdLCBbMTAuMTE4Mjc3LCA3LjAzODc3XSwgWzEwLjQ5NzM3NSwgNy4wNTUzNThdLCBbMTEuMDU4Nzg4LCA2LjY0NDQyN10sIFsxMS43NDU3NzQsIDYuOTgxMzgzXSwgWzExLjgzOTMwOSwgNy4zOTcwNDJdLCBbMTIuMDYzOTQ2LCA3Ljc5OTgwOF0sIFsxMi4yMTg4NzIsIDguMzA1ODI0XSwgWzEyLjc1MzY3MiwgOC43MTc3NjNdLCBbMTIuOTU1NDY4LCA5LjQxNzc3Ml0sIFsxMy4xNjc2LCA5LjY0MDYyNl0sIFsxMy4zMDg2NzYsIDEwLjE2MDM2Ml0sIFsxMy41NzI5NSwgMTAuNzk4NTY2XSwgWzE0LjQxNTM3OSwgMTEuNTcyMzY5XSwgWzE0LjQ2ODE5MiwgMTEuOTA0NzUyXSwgWzE0LjU3NzE3OCwgMTIuMDg1MzYxXSwgWzE0LjE4MTMzNiwgMTIuNDgzNjU3XSwgWzE0LjIxMzUzMSwgMTIuODAyMDM1XSwgWzE0LjQ5NTc4NywgMTIuODU5Mzk2XSwgWzE0Ljg5MzM4NiwgMTIuMjE5MDQ4XSwgWzE0Ljk2MDE1MiwgMTEuNTU1NTc0XSwgWzE0LjkyMzU2NSwgMTAuODkxMzI1XSwgWzE1LjQ2Nzg3MywgOS45ODIzMzddLCBbMTQuOTA5MzU0LCA5Ljk5MjEyOV0sIFsxNC42MjcyMDEsIDkuOTIwOTE5XSwgWzE0LjE3MTQ2NiwgMTAuMDIxMzc4XSwgWzEzLjk1NDIxOCwgOS41NDk0OTVdLCBbMTQuNTQ0NDY3LCA4Ljk2NTg2MV0sIFsxNC45Nzk5OTYsIDguNzk2MTA0XSwgWzE1LjEyMDg2NiwgOC4zODIxNV0sIFsxNS40MzYwOTIsIDcuNjkyODEyXSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjU1ODkzNiwgNS4wMzA1OThdLCBbMTQuNDc4MzcyLCA0LjczMjYwNV0sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1Ljg2MjczMiwgMy4wMTM1MzddLCBbMTUuOTA3MzgxLCAyLjU1NzM4OV0sIFsxNi4wMTI4NTIsIDIuMjY3NjRdLCBbMTUuOTQwOTE5LCAxLjcyNzY3M10sIFsxNS4xNDYzNDIsIDEuOTY0MDE1XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTMuMDc1ODIyLCAyLjI2NzA5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ01SIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW1lcm9vbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzAuODMzODYsIDMuNTA5MTY2XSwgWzMwLjc3MzM0NywgMi4zMzk4ODNdLCBbMzEuMTc0MTQ5LCAyLjIwNDQ2NV0sIFszMC44NTI2NywgMS44NDkzOTZdLCBbMzAuNDY4NTA4LCAxLjU4MzgwNV0sIFszMC4wODYxNTQsIDEuMDYyMzEzXSwgWzI5Ljg3NTc3OSwgMC41OTczOF0sIFsyOS44MTk1MDMsIC0wLjIwNTMxXSwgWzI5LjU4NzgzOCwgLTAuNTg3NDA2XSwgWzI5LjU3OTQ2NiwgLTEuMzQxMzEzXSwgWzI5LjI5MTg4NywgLTEuNjIwMDU2XSwgWzI5LjI1NDgzNSwgLTIuMjE1MTFdLCBbMjkuMTE3NDc5LCAtMi4yOTIyMTFdLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuNTE5OTg3LCAtNS40MTk5NzldLCBbMjkuNDE5OTkzLCAtNS45Mzk5OTldLCBbMjkuNjIwMDMyLCAtNi41MjAwMTVdLCBbMzAuMTk5OTk3LCAtNy4wNzk5ODFdLCBbMzAuNzQwMDE1LCAtOC4zNDAwMDddLCBbMzAuMzQ2MDg2LCAtOC4yMzgyNTddLCBbMjkuMDAyOTEyLCAtOC40MDcwMzJdLCBbMjguNzM0ODY3LCAtOC41MjY1NTldLCBbMjguNDQ5ODcxLCAtOS4xNjQ5MThdLCBbMjguNjczNjgyLCAtOS42MDU5MjVdLCBbMjguNDk2MDcsIC0xMC43ODk4ODRdLCBbMjguMzcyMjUzLCAtMTEuNzkzNjQ3XSwgWzI4LjY0MjQxNywgLTExLjk3MTU2OV0sIFsyOS4zNDE1NDgsIC0xMi4zNjA3NDRdLCBbMjkuNjE2MDAxLCAtMTIuMTc4ODk1XSwgWzI5LjY5OTYxNCwgLTEzLjI1NzIyN10sIFsyOC45MzQyODYsIC0xMy4yNDg5NThdLCBbMjguNTIzNTYyLCAtMTIuNjk4NjA0XSwgWzI4LjE1NTEwOSwgLTEyLjI3MjQ4MV0sIFsyNy4zODg3OTksIC0xMi4xMzI3NDddLCBbMjcuMTY0NDIsIC0xMS42MDg3NDhdLCBbMjYuNTUzMDg4LCAtMTEuOTI0NDRdLCBbMjUuNzUyMzEsIC0xMS43ODQ5NjVdLCBbMjUuNDE4MTE4LCAtMTEuMzMwOTM2XSwgWzI0Ljc4MzE3LCAtMTEuMjM4Njk0XSwgWzI0LjMxNDUxNiwgLTExLjI2MjgyNl0sIFsyNC4yNTcxNTUsIC0xMC45NTE5OTNdLCBbMjMuOTEyMjE1LCAtMTAuOTI2ODI2XSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMi44MzczNDUsIC0xMS4wMTc2MjJdLCBbMjIuNDAyNzk4LCAtMTAuOTkzMDc1XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi4yMDg3NTMsIC05Ljg5NDc5Nl0sIFsyMS44NzUxODIsIC05LjUyMzcwOF0sIFsyMS44MDE4MDEsIC04LjkwODcwN10sIFsyMS45NDkxMzEsIC04LjMwNTkwMV0sIFsyMS43NDY0NTYsIC03LjkyMDA4NV0sIFsyMS43MjgxMTEsIC03LjI5MDg3Ml0sIFsyMC41MTQ3NDgsIC03LjI5OTYwNl0sIFsyMC42MDE4MjMsIC02LjkzOTMxOF0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjAzNzcyMywgLTcuMTE2MzYxXSwgWzE5LjQxNzUwMiwgLTcuMTU1NDI5XSwgWzE5LjE2NjYxMywgLTcuNzM4MTg0XSwgWzE5LjAxNjc1MiwgLTcuOTg4MjQ2XSwgWzE4LjQ2NDE3NiwgLTcuODQ3MDE0XSwgWzE4LjEzNDIyMiwgLTcuOTg3Njc4XSwgWzE3LjQ3Mjk3LCAtOC4wNjg1NTFdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTYuNTczMTgsIC02LjYyMjY0NV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzEzLjM3NTU5NywgLTUuODY0MjQxXSwgWzEzLjAyNDg2OSwgLTUuOTg0Mzg5XSwgWzEyLjczNTE3MSwgLTUuOTY1NjgyXSwgWzEyLjMyMjQzMiwgLTYuMTAwMDkyXSwgWzEyLjE4MjMzNywgLTUuNzg5OTMxXSwgWzEyLjQzNjY4OCwgLTUuNjg0MzA0XSwgWzEyLjQ2ODAwNCwgLTUuMjQ4MzYyXSwgWzEyLjYzMTYxMiwgLTQuOTkxMjcxXSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXSwgWzEzLjI1ODI0LCAtNC44ODI5NTddLCBbMTMuNjAwMjM1LCAtNC41MDAxMzhdLCBbMTQuMTQ0OTU2LCAtNC41MTAwMDldLCBbMTQuMjA5MDM1LCAtNC43OTMwOTJdLCBbMTQuNTgyNjA0LCAtNC45NzAyMzldLCBbMTUuMTcwOTkyLCAtNC4zNDM1MDddLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNi4wMDYyOSwgLTMuNTM1MTMzXSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE3LjUyMzcxNiwgLTAuNzQzODNdLCBbMTcuNjM4NjQ1LCAtMC40MjQ4MzJdLCBbMTcuNjYzNTUzLCAtMC4wNTgwODRdLCBbMTcuODI2NTQsIDAuMjg4OTIzXSwgWzE3Ljc3NDE5MiwgMC44NTU2NTldLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxOC4wOTQyNzYsIDIuMzY1NzIyXSwgWzE4LjM5Mzc5MiwgMi45MDA0NDNdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC41NDI5ODIsIDQuMjAxNzg1XSwgWzE4LjkzMjMxMiwgNC43MDk1MDZdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsyMC4yOTA2NzksIDQuNjkxNjc4XSwgWzIwLjkyNzU5MSwgNC4zMjI3ODZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyNC40MTA1MzEsIDUuMTA4Nzg0XSwgWzI0LjgwNTAyOSwgNC44OTcyNDddLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNS4yNzg3OTgsIDUuMTcwNDA4XSwgWzI1LjY1MDQ1NSwgNS4yNTYwODhdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNy4wNDQwNjUsIDUuMTI3ODUzXSwgWzI3LjM3NDIyNiwgNS4yMzM5NDRdLCBbMjcuOTc5OTc3LCA0LjQwODQxM10sIFsyOC40Mjg5OTQsIDQuMjg3MTU1XSwgWzI4LjY5NjY3OCwgNC40NTUwNzddLCBbMjkuMTU5MDc4LCA0LjM4OTI2N10sIFsyOS43MTU5OTUsIDQuNjAwODA1XSwgWzI5Ljk1MzUsIDQuMTczNjk5XSwgWzMwLjgzMzg2LCAzLjUwOTE2Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ09EIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjIwNzYsIC00LjQzODAyM10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzExLjkxNDk2MywgLTUuMDM3OTg3XSwgWzExLjA5Mzc3MywgLTMuOTc4ODI3XSwgWzExLjg1NTEyMiwgLTMuNDI2ODcxXSwgWzExLjQ3ODAzOSwgLTIuNzY1NjE5XSwgWzExLjgyMDk2NCwgLTIuNTE0MTYxXSwgWzEyLjQ5NTcwMywgLTIuMzkxNjg4XSwgWzEyLjU3NTI4NCwgLTEuOTQ4NTExXSwgWzEzLjEwOTYxOSwgLTIuNDI4NzRdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTQuMjk5MjEsIC0xLjk5ODI3Nl0sIFsxNC40MjU0NTYsIC0xLjMzMzQwN10sIFsxNC4zMTY0MTgsIC0wLjU1MjYyN10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzEzLjI4MjYzMSwgMS4zMTQxODRdLCBbMTMuMDAzMTE0LCAxLjgzMDg5Nl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTUuMTQ2MzQyLCAxLjk2NDAxNV0sIFsxNS45NDA5MTksIDEuNzI3NjczXSwgWzE2LjAxMjg1MiwgMi4yNjc2NF0sIFsxNi41MzcwNTgsIDMuMTk4MjU1XSwgWzE3LjEzMzA0MiwgMy43MjgxOTddLCBbMTcuODA5OSwgMy41NjAxOTZdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC4zOTM3OTIsIDIuOTAwNDQzXSwgWzE4LjA5NDI3NiwgMi4zNjU3MjJdLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxNy43NzQxOTIsIDAuODU1NjU5XSwgWzE3LjgyNjU0LCAwLjI4ODkyM10sIFsxNy42NjM1NTMsIC0wLjA1ODA4NF0sIFsxNy42Mzg2NDUsIC0wLjQyNDgzMl0sIFsxNy41MjM3MTYsIC0wLjc0MzgzXSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjAwNjI5LCAtMy41MzUxMzNdLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNS4xNzA5OTIsIC00LjM0MzUwN10sIFsxNC41ODI2MDQsIC00Ljk3MDIzOV0sIFsxNC4yMDkwMzUsIC00Ljc5MzA5Ml0sIFsxNC4xNDQ5NTYsIC00LjUxMDAwOV0sIFsxMy42MDAyMzUsIC00LjUwMDEzOF0sIFsxMy4yNTgyNCwgLTQuODgyOTU3XSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0ciLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS44MDE0NjYsIDAuMDg0ODAxXSwgWy03Ni4yOTIzMTQsIDAuNDE2MDQ3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc3LjQyNDk4NCwgMC4zOTU2ODddLCBbLTc3LjY2ODYxMywgMC44MjU4OTNdLCBbLTc3Ljg1NTA2MSwgMC44MDk5MjVdLCBbLTc4Ljg1NTI1OSwgMS4zODA5MjRdLCBbLTc4Ljk5MDkzNSwgMS42OTEzN10sIFstNzguNjE3ODMxLCAxLjc2NjQwNF0sIFstNzguNjYyMTE4LCAyLjI2NzM1NV0sIFstNzguNDI3NjEsIDIuNjI5NTU2XSwgWy03Ny45MzE1NDMsIDIuNjk2NjA2XSwgWy03Ny41MTA0MzEsIDMuMzI1MDE3XSwgWy03Ny4xMjc2OSwgMy44NDk2MzZdLCBbLTc3LjQ5NjI3MiwgNC4wODc2MDZdLCBbLTc3LjMwNzYwMSwgNC42Njc5ODRdLCBbLTc3LjUzMzIyMSwgNS41ODI4MTJdLCBbLTc3LjMxODgxNSwgNS44NDUzNTRdLCBbLTc3LjQ3NjY2MSwgNi42OTExMTZdLCBbLTc3Ljg4MTU3MSwgNy4yMjM3NzFdLCBbLTc3Ljc1MzQxNCwgNy43MDk4NF0sIFstNzcuNDMxMTA4LCA3LjYzODA2MV0sIFstNzcuMjQyNTY2LCA3LjkzNTI3OF0sIFstNzcuNDc0NzIzLCA4LjUyNDI4Nl0sIFstNzcuMzUzMzYxLCA4LjY3MDUwNV0sIFstNzYuODM2Njc0LCA4LjYzODc0OV0sIFstNzYuMDg2Mzg0LCA5LjMzNjgyMV0sIFstNzUuNjc0NiwgOS40NDMyNDhdLCBbLTc1LjY2NDcwNCwgOS43NzQwMDNdLCBbLTc1LjQ4MDQyNiwgMTAuNjE4OTldLCBbLTc0LjkwNjg5NSwgMTEuMDgzMDQ1XSwgWy03NC4yNzY3NTMsIDExLjEwMjAzNl0sIFstNzQuMTk3MjIzLCAxMS4zMTA0NzNdLCBbLTczLjQxNDc2NCwgMTEuMjI3MDE1XSwgWy03Mi42Mjc4MzUsIDExLjczMTk3Ml0sIFstNzIuMjM4MTk1LCAxMS45NTU1NV0sIFstNzEuNzU0MDksIDEyLjQzNzMwM10sIFstNzEuMzk5ODIyLCAxMi4zNzYwNDFdLCBbLTcxLjEzNzQ2MSwgMTIuMTEyOTgyXSwgWy03MS4zMzE1ODQsIDExLjc3NjI4NF0sIFstNzEuOTczOTIyLCAxMS42MDg2NzJdLCBbLTcyLjIyNzU3NSwgMTEuMTA4NzAyXSwgWy03Mi42MTQ2NTgsIDEwLjgyMTk3NV0sIFstNzIuOTA1Mjg2LCAxMC40NTAzNDRdLCBbLTczLjAyNzYwNCwgOS43MzY3N10sIFstNzMuMzA0OTUyLCA5LjE1Ml0sIFstNzIuNzg4NzMsIDkuMDg1MDI3XSwgWy03Mi42NjA0OTUsIDguNjI1Mjg4XSwgWy03Mi40Mzk4NjIsIDguNDA1Mjc1XSwgWy03Mi4zNjA5MDEsIDguMDAyNjM4XSwgWy03Mi40Nzk2NzksIDcuNjMyNTA2XSwgWy03Mi40NDQ0ODcsIDcuNDIzNzg1XSwgWy03Mi4xOTgzNTIsIDcuMzQwNDMxXSwgWy03MS45NjAxNzYsIDYuOTkxNjE1XSwgWy03MC42NzQyMzQsIDcuMDg3Nzg1XSwgWy03MC4wOTMzMTMsIDYuOTYwMzc2XSwgWy02OS4zODk0OCwgNi4wOTk4NjFdLCBbLTY4Ljk4NTMxOSwgNi4yMDY4MDVdLCBbLTY4LjI2NTA1MiwgNi4xNTMyNjhdLCBbLTY3LjY5NTA4NywgNi4yNjczMThdLCBbLTY3LjM0MTQ0LCA2LjA5NTQ2OF0sIFstNjcuNTIxNTMyLCA1LjU1Njg3XSwgWy02Ny43NDQ2OTcsIDUuMjIxMTI5XSwgWy02Ny44MjMwMTIsIDQuNTAzOTM3XSwgWy02Ny42MjE4MzYsIDMuODM5NDgyXSwgWy02Ny4zMzc1NjQsIDMuNTQyMzQyXSwgWy02Ny4zMDMxNzMsIDMuMzE4NDU0XSwgWy02Ny44MDk5MzgsIDIuODIwNjU1XSwgWy02Ny40NDcwOTIsIDIuNjAwMjgxXSwgWy02Ny4xODEyOTQsIDIuMjUwNjM4XSwgWy02Ni44NzYzMjYsIDEuMjUzMzYxXSwgWy02Ny4wNjUwNDgsIDEuMTMwMTEyXSwgWy02Ny4yNTk5OTgsIDEuNzE5OTk5XSwgWy02Ny41Mzc4MSwgMi4wMzcxNjNdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTcwLjAyMDY1NiwgLTAuMTg1MTU2XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNjkuNDIwNDg2LCAtMS4xMjI2MTldLCBbLTY5LjQ0NDEwMiwgLTEuNTU2Mjg3XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNzAuMzk0MDQ0LCAtMy43NjY1OTFdLCBbLTcwLjY5MjY4MiwgLTMuNzQyODcyXSwgWy03MC4wNDc3MDksIC0yLjcyNTE1Nl0sIFstNzAuODEzNDc2LCAtMi4yNTY4NjVdLCBbLTcxLjQxMzY0NiwgLTIuMzQyODAyXSwgWy03MS43NzQ3NjEsIC0yLjE2OTc5XSwgWy03Mi4zMjU3ODcsIC0yLjQzNDIxOF0sIFstNzMuMDcwMzkyLCAtMi4zMDg5NTRdLCBbLTczLjY1OTUwNCwgLTEuMjYwNDkxXSwgWy03NC4xMjIzOTUsIC0xLjAwMjgzM10sIFstNzQuNDQxNjAxLCAtMC41MzA4Ml0sIFstNzUuMTA2NjI1LCAtMC4wNTcyMDVdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0wiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvbG9tYmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODIuOTY1NzgzLCA4LjIyNTAyOF0sIFstODMuNTA4NDM3LCA4LjQ0NjkyN10sIFstODMuNzExNDc0LCA4LjY1NjgzNl0sIFstODMuNTk2MzEzLCA4LjgzMDQ0M10sIFstODMuNjMyNjQyLCA5LjA1MTM4Nl0sIFstODMuOTA5ODg2LCA5LjI5MDgwM10sIFstODQuMzAzNDAyLCA5LjQ4NzM1NF0sIFstODQuNjQ3NjQ0LCA5LjYxNTUzN10sIFstODQuNzEzMzUxLCA5LjkwODA1Ml0sIFstODQuOTc1NjYsIDEwLjA4NjcyM10sIFstODQuOTExMzc1LCA5Ljc5NTk5Ml0sIFstODUuMTEwOTIzLCA5LjU1NzA0XSwgWy04NS4zMzk0ODgsIDkuODM0NTQyXSwgWy04NS42NjA3ODcsIDkuOTMzMzQ3XSwgWy04NS43OTc0NDUsIDEwLjEzNDg4Nl0sIFstODUuNzkxNzA5LCAxMC40MzkzMzddLCBbLTg1LjY1OTMxNCwgMTAuNzU0MzMxXSwgWy04NS45NDE3MjUsIDEwLjg5NTI3OF0sIFstODUuNzEyNTQsIDExLjA4ODQ0NV0sIFstODUuNTYxODUyLCAxMS4yMTcxMTldLCBbLTg0LjkwMzAwMywgMTAuOTUyMzAzXSwgWy04NC42NzMwNjksIDExLjA4MjY1N10sIFstODQuMzU1OTMxLCAxMC45OTkyMjZdLCBbLTg0LjE5MDE3OSwgMTAuNzkzNDVdLCBbLTgzLjg5NTA1NCwgMTAuNzI2ODM5XSwgWy04My42NTU2MTIsIDEwLjkzODc2NF0sIFstODMuNDAyMzIsIDEwLjM5NTQzOF0sIFstODMuMDE1Njc3LCA5Ljk5Mjk4Ml0sIFstODIuNTQ2MTk2LCA5LjU2NjEzNV0sIFstODIuOTMyODkxLCA5LjQ3NjgxMl0sIFstODIuOTI3MTU1LCA5LjA3NDMzXSwgWy04Mi43MTkxODMsIDguOTI1NzA5XSwgWy04Mi44Njg2NTcsIDguODA3MjY2XSwgWy04Mi44Mjk3NzEsIDguNjI2Mjk1XSwgWy04Mi45MTMxNzYsIDguNDIzNTE3XSwgWy04Mi45NjU3ODMsIDguMjI1MDI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDUkkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvc3RhIFJpY2EiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV0sIFstODEuNDA0NDU3LCAyMy4xMTcyNzFdLCBbLTgwLjYxODc2OSwgMjMuMTA1OThdLCBbLTc5LjY3OTUyNCwgMjIuNzY1MzAzXSwgWy03OS4yODE0ODYsIDIyLjM5OTIwMl0sIFstNzguMzQ3NDM0LCAyMi41MTIxNjZdLCBbLTc3Ljk5MzI5NiwgMjIuMjc3MTk0XSwgWy03Ny4xNDY0MjIsIDIxLjY1Nzg1MV0sIFstNzYuNTIzODI1LCAyMS4yMDY4Ml0sIFstNzYuMTk0NjIsIDIxLjIyMDU2NV0sIFstNzUuNTk4MjIyLCAyMS4wMTY2MjRdLCBbLTc1LjY3MTA2LCAyMC43MzUwOTFdLCBbLTc0LjkzMzg5NiwgMjAuNjkzOTA1XSwgWy03NC4xNzgwMjUsIDIwLjI4NDYyOF0sIFstNzQuMjk2NjQ4LCAyMC4wNTAzNzldLCBbLTc0Ljk2MTU5NSwgMTkuOTIzNDM1XSwgWy03NS42MzQ2OCwgMTkuODczNzc0XSwgWy03Ni4zMjM2NTYsIDE5Ljk1Mjg5MV0sIFstNzcuNzU1NDgxLCAxOS44NTU0ODFdLCBbLTc3LjA4NTEwOCwgMjAuNDEzMzU0XSwgWy03Ny40OTI2NTUsIDIwLjY3MzEwNV0sIFstNzguMTM3MjkyLCAyMC43Mzk5NDldLCBbLTc4LjQ4MjgyNywgMjEuMDI4NjEzXSwgWy03OC43MTk4NjcsIDIxLjU5ODExNF0sIFstNzkuMjg1LCAyMS41NTkxNzVdLCBbLTgwLjIxNzQ3NSwgMjEuODI3MzI0XSwgWy04MC41MTc1MzUsIDIyLjAzNzA3OV0sIFstODEuODIwOTQzLCAyMi4xOTIwNTddLCBbLTgyLjE2OTk5MiwgMjIuMzg3MTA5XSwgWy04MS43OTUwMDIsIDIyLjYzNjk2NV0sIFstODIuNzc1ODk4LCAyMi42ODgxNV0sIFstODMuNDk0NDU5LCAyMi4xNjg1MThdLCBbLTgzLjkwODgsIDIyLjE1NDU2NV0sIFstODQuMDUyMTUxLCAyMS45MTA1NzVdLCBbLTg0LjU0NzAzLCAyMS44MDEyMjhdLCBbLTg0Ljk3NDkxMSwgMjEuODk2MDI4XSwgWy04NC40NDcwNjIsIDIyLjIwNDk1XSwgWy04NC4yMzAzNTcsIDIyLjU2NTc1NV0sIFstODMuNzc4MjQsIDIyLjc4ODExOF0sIFstODMuMjY3NTQ4LCAyMi45ODMwNDJdLCBbLTgyLjUxMDQzNiwgMjMuMDc4NzQ3XSwgWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1VCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDdWJhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szMi43MzE3OCwgMzUuMTQwMDI2XSwgWzMyLjgwMjQ3NCwgMzUuMTQ1NTA0XSwgWzMyLjk0Njk2MSwgMzUuMzg2NzAzXSwgWzMzLjY2NzIyNywgMzUuMzczMjE2XSwgWzM0LjU3NjQ3NCwgMzUuNjcxNTk2XSwgWzMzLjkwMDgwNCwgMzUuMjQ1NzU2XSwgWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzMzLjg2NjQ0LCAzNS4wOTM1OTVdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzIuNzMxNzgsIDM1LjE0MDAyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiLTk5IiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJOb3J0aGVybiBDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzM0LjAwNDg4MSwgMzQuOTc4MDk4XSwgWzMyLjk3OTgyNywgMzQuNTcxODY5XSwgWzMyLjQ5MDI5NiwgMzQuNzAxNjU1XSwgWzMyLjI1NjY2NywgMzUuMTAzMjMyXSwgWzMyLjczMTc4LCAzNS4xNDAwMjZdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuODY2NDQsIDM1LjA5MzU5NV0sIFszMy45NzM2MTcsIDM1LjA1ODUwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1lQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzEzLjAzMTMyOSwgNDkuMzA3MDY4XSwgWzEyLjUyMTAyNCwgNDkuNTQ3NDE1XSwgWzEyLjQxNTE5MSwgNDkuOTY5MTIxXSwgWzEyLjI0MDExMSwgNTAuMjY2MzM4XSwgWzEyLjk2NjgzNywgNTAuNDg0MDc2XSwgWzEzLjMzODEzMiwgNTAuNzMzMjM0XSwgWzE0LjA1NjIyOCwgNTAuOTI2OTE4XSwgWzE0LjMwNzAxMywgNTEuMTE3MjY4XSwgWzE0LjU3MDcxOCwgNTEuMDAyMzM5XSwgWzE1LjAxNjk5NiwgNTEuMTA2Njc0XSwgWzE1LjQ5MDk3MiwgNTAuNzg0NzNdLCBbMTYuMjM4NjI3LCA1MC42OTc3MzNdLCBbMTYuMTc2MjUzLCA1MC40MjI2MDddLCBbMTYuNzE5NDc2LCA1MC4yMTU3NDddLCBbMTYuODY4NzY5LCA1MC40NzM5NzRdLCBbMTcuNTU0NTY3LCA1MC4zNjIxNDZdLCBbMTcuNjQ5NDQ1LCA1MC4wNDkwMzhdLCBbMTguMzkyOTE0LCA0OS45ODg2MjldLCBbMTguODUzMTQ0LCA0OS40OTYyM10sIFsxOC41NTQ5NzEsIDQ5LjQ5NTAxNV0sIFsxOC4zOTk5OTQsIDQ5LjMxNTAwMV0sIFsxOC4xNzA0OTgsIDQ5LjI3MTUxNV0sIFsxOC4xMDQ5NzMsIDQ5LjA0Mzk4M10sIFsxNy45MTM1MTIsIDQ4Ljk5NjQ5M10sIFsxNy44ODY0ODUsIDQ4LjkwMzQ3NV0sIFsxNy41NDUwMDcsIDQ4LjgwMDAxOV0sIFsxNy4xMDE5ODUsIDQ4LjgxNjk2OV0sIFsxNi45NjAyODgsIDQ4LjU5Njk4Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1pFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDemVjaCBSZXB1YmxpYyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbOS45MjE5MDYsIDU0Ljk4MzEwNF0sIFs5LjkzOTU4LCA1NC41OTY2NDJdLCBbMTAuOTUwMTEyLCA1NC4zNjM2MDddLCBbMTAuOTM5NDY3LCA1NC4wMDg2OTNdLCBbMTEuOTU2MjUyLCA1NC4xOTY0ODZdLCBbMTIuNTE4NDQsIDU0LjQ3MDM3MV0sIFsxMy42NDc0NjcsIDU0LjA3NTUxMV0sIFsxNC4xMTk2ODYsIDUzLjc1NzAyOV0sIFsxNC4zNTMzMTUsIDUzLjI0ODE3MV0sIFsxNC4wNzQ1MjEsIDUyLjk4MTI2M10sIFsxNC40Mzc2LCA1Mi42MjQ4NV0sIFsxNC42ODUwMjYsIDUyLjA4OTk0N10sIFsxNC42MDcwOTgsIDUxLjc0NTE4OF0sIFsxNS4wMTY5OTYsIDUxLjEwNjY3NF0sIFsxNC41NzA3MTgsIDUxLjAwMjMzOV0sIFsxNC4zMDcwMTMsIDUxLjExNzI2OF0sIFsxNC4wNTYyMjgsIDUwLjkyNjkxOF0sIFsxMy4zMzgxMzIsIDUwLjczMzIzNF0sIFsxMi45NjY4MzcsIDUwLjQ4NDA3Nl0sIFsxMi4yNDAxMTEsIDUwLjI2NjMzOF0sIFsxMi40MTUxOTEsIDQ5Ljk2OTEyMV0sIFsxMi41MjEwMjQsIDQ5LjU0NzQxNV0sIFsxMy4wMzEzMjksIDQ5LjMwNzA2OF0sIFsxMy41OTU5NDYsIDQ4Ljg3NzE3Ml0sIFsxMy4yNDMzNTcsIDQ4LjQxNjExNV0sIFsxMi44ODQxMDMsIDQ4LjI4OTE0Nl0sIFsxMy4wMjU4NTEsIDQ3LjYzNzU4NF0sIFsxMi45MzI2MjcsIDQ3LjQ2NzY0Nl0sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjE0MTM1NywgNDcuNzAzMDgzXSwgWzExLjQyNjQxNCwgNDcuNTIzNzY2XSwgWzEwLjU0NDUwNCwgNDcuNTY2Mzk5XSwgWzEwLjQwMjA4NCwgNDcuMzAyNDg4XSwgWzkuODk2MDY4LCA0Ny41ODAxOTddLCBbOS41OTQyMjYsIDQ3LjUyNTA1OF0sIFs4LjUyMjYxMiwgNDcuODMwODI4XSwgWzguMzE3MzAxLCA0Ny42MTM1OF0sIFs3LjQ2Njc1OSwgNDcuNjIwNTgyXSwgWzcuNTkzNjc2LCA0OC4zMzMwMTldLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbNi4xODYzMiwgNDkuNDYzODAzXSwgWzYuMjQyNzUxLCA0OS45MDIyMjZdLCBbNi4wNDMwNzMsIDUwLjEyODA1Ml0sIFs2LjE1NjY1OCwgNTAuODAzNzIxXSwgWzUuOTg4NjU4LCA1MS44NTE2MTZdLCBbNi41ODkzOTcsIDUxLjg1MjAyOV0sIFs2Ljg0Mjg3LCA1Mi4yMjg0NF0sIFs3LjA5MjA1MywgNTMuMTQ0MDQzXSwgWzYuOTA1MTQsIDUzLjQ4MjE2Ml0sIFs3LjEwMDQyNSwgNTMuNjkzOTMyXSwgWzcuOTM2MjM5LCA1My43NDgyOTZdLCBbOC4xMjE3MDYsIDUzLjUyNzc5Ml0sIFs4LjgwMDczNCwgNTQuMDIwNzg2XSwgWzguNTcyMTE4LCA1NC4zOTU2NDZdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs5LjI4MjA0OSwgNTQuODMwODY1XSwgWzkuOTIxOTA2LCA1NC45ODMxMDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRFVSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VybWFueSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNDMuMDgxMjI2LCAxMi42OTk2MzldLCBbNDMuMzE3ODUyLCAxMi4zOTAxNDhdLCBbNDMuMjg2MzgxLCAxMS45NzQ5MjhdLCBbNDIuNzE1ODc0LCAxMS43MzU2NDFdLCBbNDMuMTQ1MzA1LCAxMS40NjIwNF0sIFs0Mi43NzY4NTIsIDEwLjkyNjg3OV0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuMzE0MTQsIDExLjAzNDJdLCBbNDEuNzU1NTcsIDExLjA1MDkxXSwgWzQxLjczOTU5LCAxMS4zNTUxMV0sIFs0MS42NjE3NiwgMTEuNjMxMl0sIFs0MiwgMTIuMV0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIuNzc5NjQyLCAxMi40NTU0MTZdLCBbNDMuMDgxMjI2LCAxMi42OTk2MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRGppYm91dGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMi42OTAwMDYsIDU1LjYwOTk5MV0sIFsxMi4wODk5OTEsIDU0LjgwMDAxNV0sIFsxMS4wNDM1NDMsIDU1LjM2NDg2NF0sIFsxMC45MDM5MTQsIDU1Ljc3OTk1NV0sIFsxMi4zNzA5MDQsIDU2LjExMTQwN10sIFsxMi42OTAwMDYsIDU1LjYwOTk5MV1dXSwgW1tbMTAuOTEyMTgyLCA1Ni40NTg2MjFdLCBbMTAuNjY3ODA0LCA1Ni4wODEzODNdLCBbMTAuMzY5OTkzLCA1Ni4xOTAwMDddLCBbOS42NDk5ODUsIDU1LjQ2OTk5OV0sIFs5LjkyMTkwNiwgNTQuOTgzMTA0XSwgWzkuMjgyMDQ5LCA1NC44MzA4NjVdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs4LjEyMDMxMSwgNTUuNTE3NzIzXSwgWzguMDg5OTc3LCA1Ni41NDAwMTJdLCBbOC4yNTY1ODIsIDU2LjgwOTk2OV0sIFs4LjU0MzQzOCwgNTcuMTEwMDAzXSwgWzkuNDI0NDY5LCA1Ny4xNzIwNjZdLCBbOS43NzU1NTksIDU3LjQ0Nzk0MV0sIFsxMC41ODAwMDYsIDU3LjczMDAxN10sIFsxMC41NDYxMDYsIDU3LjIxNTczM10sIFsxMC4yNSwgNTYuODkwMDE2XSwgWzEwLjM2OTk5MywgNTYuNjA5OTgyXSwgWzEwLjkxMjE4MiwgNTYuNDU4NjIxXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJETksiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkRlbm1hcmsiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03MS43MTIzNjEsIDE5LjcxNDQ1Nl0sIFstNzEuNTg3MzA0LCAxOS44ODQ5MTFdLCBbLTcwLjgwNjcwNiwgMTkuODgwMjg2XSwgWy03MC4yMTQzNjUsIDE5LjYyMjg4NV0sIFstNjkuOTUwODE1LCAxOS42NDhdLCBbLTY5Ljc2OTI1LCAxOS4yOTMyNjddLCBbLTY5LjIyMjEyNiwgMTkuMzEzMjE0XSwgWy02OS4yNTQzNDYsIDE5LjAxNTE5Nl0sIFstNjguODA5NDEyLCAxOC45NzkwNzRdLCBbLTY4LjMxNzk0MywgMTguNjEyMTk4XSwgWy02OC42ODkzMTYsIDE4LjIwNTE0Ml0sIFstNjkuMTY0OTQ2LCAxOC40MjI2NDhdLCBbLTY5LjYyMzk4OCwgMTguMzgwNzEzXSwgWy02OS45NTI5MzQsIDE4LjQyODMwN10sIFstNzAuMTMzMjMzLCAxOC4yNDU5MTVdLCBbLTcwLjUxNzEzNywgMTguMTg0MjkxXSwgWy03MC42NjkyOTgsIDE4LjQyNjg4Nl0sIFstNzAuOTk5OTUsIDE4LjI4MzMyOV0sIFstNzEuNDAwMjEsIDE3LjU5ODU2NF0sIFstNzEuNjU3NjYyLCAxNy43NTc1NzNdLCBbLTcxLjcwODMwNSwgMTguMDQ0OTk3XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS45NDUxMTIsIDE4LjYxNjldLCBbLTcxLjcwMTMwMywgMTguNzg1NDE3XSwgWy03MS42MjQ4NzMsIDE5LjE2OTgzOF0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRPTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRG9taW5pY2FuIFJlcHVibGljIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS45OTk1MDYsIDIzLjQ3MTY2OF0sIFs4LjU3Mjg5MywgMjEuNTY1NjYxXSwgWzUuNjc3NTY2LCAxOS42MDEyMDddLCBbNC4yNjc0MTksIDE5LjE1NTI2NV0sIFszLjE1ODEzMywgMTkuMDU3MzY0XSwgWzMuMTQ2NjYxLCAxOS42OTM1NzldLCBbMi42ODM1ODgsIDE5Ljg1NjIzXSwgWzIuMDYwOTkxLCAyMC4xNDIyMzNdLCBbMS44MjMyMjgsIDIwLjYxMDgwOV0sIFstMS41NTAwNTUsIDIyLjc5MjY2Nl0sIFstNC45MjMzMzcsIDI0Ljk3NDU3NF0sIFstOC42ODQ0LCAyNy4zOTU3NDRdLCBbLTguNjY1MTI0LCAyNy41ODk0NzldLCBbLTguNjY1NTksIDI3LjY1NjQyNl0sIFstOC42NzQxMTYsIDI4Ljg0MTI4OV0sIFstNy4wNTkyMjgsIDI5LjU3OTIyOF0sIFstNi4wNjA2MzIsIDI5LjczMTddLCBbLTUuMjQyMTI5LCAzMC4wMDA0NDNdLCBbLTQuODU5NjQ2LCAzMC41MDExODhdLCBbLTMuNjkwNDQxLCAzMC44OTY5NTJdLCBbLTMuNjQ3NDk4LCAzMS42MzcyOTRdLCBbLTMuMDY4OTgsIDMxLjcyNDQ5OF0sIFstMi42MTY2MDUsIDMyLjA5NDM0Nl0sIFstMS4zMDc4OTksIDMyLjI2Mjg4OV0sIFstMS4xMjQ1NTEsIDMyLjY1MTUyMl0sIFstMS4zODgwNDksIDMyLjg2NDAxNV0sIFstMS43MzM0NTUsIDMzLjkxOTcxM10sIFstMS43OTI5ODYsIDM0LjUyNzkxOV0sIFstMi4xNjk5MTQsIDM1LjE2ODM5Nl0sIFstMS4yMDg2MDMsIDM1LjcxNDg0OV0sIFstMC4xMjc0NTQsIDM1Ljg4ODY2Ml0sIFswLjUwMzg3NywgMzYuMzAxMjczXSwgWzEuNDY2OTE5LCAzNi42MDU2NDddLCBbMy4xNjE2OTksIDM2Ljc4MzkwNV0sIFs0LjgxNTc1OCwgMzYuODY1MDM3XSwgWzUuMzIwMTIsIDM2LjcxNjUxOV0sIFs2LjI2MTgyLCAzNy4xMTA2NTVdLCBbNy4zMzAzODUsIDM3LjExODM4MV0sIFs3LjczNzA3OCwgMzYuODg1NzA4XSwgWzguNDIwOTY0LCAzNi45NDY0MjddLCBbOC4yMTc4MjQsIDM2LjQzMzE3N10sIFs4LjM3NjM2OCwgMzUuNDc5ODc2XSwgWzguMTQwOTgxLCAzNC42NTUxNDZdLCBbNy41MjQ0ODIsIDM0LjA5NzM3Nl0sIFs3LjYxMjY0MiwgMzMuMzQ0MTE1XSwgWzguNDMwNDczLCAzMi43NDgzMzddLCBbOC40MzkxMDMsIDMyLjUwNjI4NV0sIFs5LjA1NTYwMywgMzIuMTAyNjkyXSwgWzkuNDgyMTQsIDMwLjMwNzU1Nl0sIFs5LjgwNTYzNCwgMjkuNDI0NjM4XSwgWzkuODU5OTk4LCAyOC45NTk5OV0sIFs5LjY4Mzg4NSwgMjguMTQ0MTc0XSwgWzkuNzU2MTI4LCAyNy42ODgyNTldLCBbOS42MjkwNTYsIDI3LjE0MDk1M10sIFs5LjcxNjI4NiwgMjYuNTEyMjA2XSwgWzkuMzE5NDExLCAyNi4wOTQzMjVdLCBbOS45MTA2OTMsIDI1LjM2NTQ1NV0sIFs5Ljk0ODI2MSwgMjQuOTM2OTU0XSwgWzEwLjMwMzg0NywgMjQuMzc5MzEzXSwgWzEwLjc3MTM2NCwgMjQuNTYyNTMyXSwgWzExLjU2MDY2OSwgMjQuMDk3OTA5XSwgWzExLjk5OTUwNiwgMjMuNDcxNjY4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJEWkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFsZ2VyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04MC4zMDI1NjEsIC0zLjQwNDg1Nl0sIFstNzkuNzcwMjkzLCAtMi42NTc1MTJdLCBbLTc5Ljk4NjU1OSwgLTIuMjIwNzk0XSwgWy04MC4zNjg3ODQsIC0yLjY4NTE1OV0sIFstODAuOTY3NzY1LCAtMi4yNDY5NDNdLCBbLTgwLjc2NDgwNiwgLTEuOTY1MDQ4XSwgWy04MC45MzM2NTksIC0xLjA1NzQ1NV0sIFstODAuNTgzMzcsIC0wLjkwNjY2M10sIFstODAuMzk5MzI1LCAtMC4yODM3MDNdLCBbLTgwLjAyMDg5OCwgMC4zNjAzNF0sIFstODAuMDkwNjEsIDAuNzY4NDI5XSwgWy03OS41NDI3NjIsIDAuOTgyOTM4XSwgWy03OC44NTUyNTksIDEuMzgwOTI0XSwgWy03Ny44NTUwNjEsIDAuODA5OTI1XSwgWy03Ny42Njg2MTMsIDAuODI1ODkzXSwgWy03Ny40MjQ5ODQsIDAuMzk1Njg3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc2LjI5MjMxNCwgMC40MTYwNDddLCBbLTc1LjgwMTQ2NiwgMC4wODQ4MDFdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS4yMzM3MjMsIC0wLjkxMTQxN10sIFstNzUuNTQ0OTk2LCAtMS41NjE2MV0sIFstNzYuNjM1Mzk0LCAtMi42MDg2NzhdLCBbLTc3LjgzNzkwNSwgLTMuMDAzMDIxXSwgWy03OC40NTA2ODQsIC0zLjg3MzA5N10sIFstNzguNjM5ODk3LCAtNC41NDc3ODRdLCBbLTc5LjIwNTI4OSwgLTQuOTU5MTI5XSwgWy03OS42MjQ5NzksIC00LjQ1NDE5OF0sIFstODAuMDI4OTA4LCAtNC4zNDYwOTFdLCBbLTgwLjQ0MjI0MiwgLTQuNDI1NzI0XSwgWy04MC40NjkyOTUsIC00LjA1OTI4N10sIFstODAuMTg0MDE1LCAtMy44MjExNjJdLCBbLTgwLjMwMjU2MSwgLTMuNDA0ODU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJFQ1UiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkVjdWFkb3IiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzM0LjkyMjYsIDI5LjUwMTMzXSwgWzM0LjY0MTc0LCAyOS4wOTk0Ml0sIFszNC40MjY1NSwgMjguMzQzOTldLCBbMzQuMTU0NTEsIDI3LjgyMzNdLCBbMzMuOTIxMzYsIDI3LjY0ODddLCBbMzMuNTg4MTEsIDI3Ljk3MTM2XSwgWzMzLjEzNjc2LCAyOC40MTc2NV0sIFszMi40MjMyMywgMjkuODUxMDhdLCBbMzIuMzIwNDYsIDI5Ljc2MDQzXSwgWzMyLjczNDgyLCAyOC43MDUyM10sIFszMy4zNDg3NiwgMjcuNjk5ODldLCBbMzQuMTA0NTUsIDI2LjE0MjI3XSwgWzM0LjQ3Mzg3LCAyNS41OTg1Nl0sIFszNC43OTUwNywgMjUuMDMzNzVdLCBbMzUuNjkyNDEsIDIzLjkyNjcxXSwgWzM1LjQ5MzcyLCAyMy43NTIzN10sIFszNS41MjU5OCwgMjMuMTAyNDRdLCBbMzYuNjkwNjksIDIyLjIwNDg1XSwgWzM2Ljg2NjIzLCAyMl0sIFszMi45LCAyMl0sIFsyOS4wMiwgMjJdLCBbMjUsIDIyXSwgWzI1LCAyNS42ODI1XSwgWzI1LCAyOS4yMzg2NTVdLCBbMjQuNzAwMDcsIDMwLjA0NDE5XSwgWzI0Ljk1NzYyLCAzMC42NjE2XSwgWzI0LjgwMjg3LCAzMS4wODkyOV0sIFsyNS4xNjQ4MiwgMzEuNTY5MTVdLCBbMjYuNDk1MzMsIDMxLjU4NTY4XSwgWzI3LjQ1NzYyLCAzMS4zMjEyNl0sIFsyOC40NTA0OCwgMzEuMDI1NzddLCBbMjguOTEzNTMsIDMwLjg3MDA1XSwgWzI5LjY4MzQyLCAzMS4xODY4Nl0sIFszMC4wOTUwMywgMzEuNDczNF0sIFszMC45NzY5MywgMzEuNTU1ODZdLCBbMzEuNjg3OTYsIDMxLjQyOTZdLCBbMzEuOTYwNDEsIDMwLjkzMzZdLCBbMzIuMTkyNDcsIDMxLjI2MDM0XSwgWzMyLjk5MzkyLCAzMS4wMjQwN10sIFszMy43NzM0LCAzMC45Njc0Nl0sIFszNC4yNjU0NCwgMzEuMjE5MzZdLCBbMzQuOTIyNiwgMjkuNTAxMzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVHWSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRWd5cHQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQyLjM1MTU2LCAxMi41NDIyM10sIFs0Mi4wMDk3NSwgMTIuODY1ODJdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQxLjE1NTE5NCwgMTMuNzczMzJdLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDAuMDI2MjE5LCAxNC41MTk1NzldLCBbMzkuMzQwNjEsIDE0LjUzMTU1XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM4LjUxMjk1LCAxNC41MDU0N10sIFszNy45MDYwNywgMTQuOTU5NDNdLCBbMzcuNTkzNzcsIDE0LjIxMzFdLCBbMzYuNDI5NTEsIDE0LjQyMjExXSwgWzM2LjMyMzE4OSwgMTQuODIyNDgxXSwgWzM2Ljc1Mzg2LCAxNi4yOTE4NzRdLCBbMzYuODUyNTMsIDE2Ljk1NjU1XSwgWzM3LjE2NzQ3LCAxNy4yNjMxNF0sIFszNy45MDQsIDE3LjQyNzU0XSwgWzM4LjQxMDA5LCAxNy45OTgzMDddLCBbMzguOTkwNjIzLCAxNi44NDA2MjZdLCBbMzkuMjY2MTEsIDE1LjkyMjcyM10sIFszOS44MTQyOTQsIDE1LjQzNTY0N10sIFs0MS4xNzkyNzUsIDE0LjQ5MTA4XSwgWzQxLjczNDk1MiwgMTMuOTIxMDM3XSwgWzQyLjI3NjgzMSwgMTMuMzQzOTkyXSwgWzQyLjU4OTU3NiwgMTMuMDAwNDIxXSwgWzQzLjA4MTIyNiwgMTIuNjk5NjM5XSwgWzQyLjc3OTY0MiwgMTIuNDU1NDE2XSwgWzQyLjM1MTU2LCAxMi41NDIyM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVJJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcml0cmVhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOS4wMzQ4MTgsIDQxLjg4MDU3MV0sIFstOC45ODQ0MzMsIDQyLjU5Mjc3NV0sIFstOS4zOTI4ODQsIDQzLjAyNjYyNV0sIFstNy45NzgxOSwgNDMuNzQ4MzM4XSwgWy02Ljc1NDQ5MiwgNDMuNTY3OTA5XSwgWy01LjQxMTg4NiwgNDMuNTc0MjRdLCBbLTQuMzQ3ODQzLCA0My40MDM0NDldLCBbLTMuNTE3NTMyLCA0My40NTU5MDFdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbMC4zMzgwNDcsIDQyLjU3OTU0Nl0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzEuODI2NzkzLCA0Mi4zNDMzODVdLCBbMi45ODU5OTksIDQyLjQ3MzAxNV0sIFszLjAzOTQ4NCwgNDEuODkyMTJdLCBbMi4wOTE4NDIsIDQxLjIyNjA4OV0sIFswLjgxMDUyNSwgNDEuMDE0NzMyXSwgWzAuNzIxMzMxLCA0MC42NzgzMThdLCBbMC4xMDY2OTIsIDQwLjEyMzkzNF0sIFstMC4yNzg3MTEsIDM5LjMwOTk3OF0sIFswLjExMTI5MSwgMzguNzM4NTE0XSwgWy0wLjQ2NzEyNCwgMzguMjkyMzY2XSwgWy0wLjY4MzM4OSwgMzcuNjQyMzU0XSwgWy0xLjQzODM4MiwgMzcuNDQzMDY0XSwgWy0yLjE0NjQ1MywgMzYuNjc0MTQ0XSwgWy0zLjQxNTc4MSwgMzYuNjU4OV0sIFstNC4zNjg5MDEsIDM2LjY3NzgzOV0sIFstNC45OTUyMTksIDM2LjMyNDcwOF0sIFstNS4zNzcxNiwgMzUuOTQ2ODVdLCBbLTUuODY2NDMyLCAzNi4wMjk4MTddLCBbLTYuMjM2Njk0LCAzNi4zNjc2NzddLCBbLTYuNTIwMTkxLCAzNi45NDI5MTNdLCBbLTcuNDUzNzI2LCAzNy4wOTc3ODhdLCBbLTcuNTM3MTA1LCAzNy40Mjg5MDRdLCBbLTcuMTY2NTA4LCAzNy44MDM4OTRdLCBbLTcuMDI5MjgxLCAzOC4wNzU3NjRdLCBbLTcuMzc0MDkyLCAzOC4zNzMwNTldLCBbLTcuMDk4MDM3LCAzOS4wMzAwNzNdLCBbLTcuNDk4NjMyLCAzOS42Mjk1NzFdLCBbLTcuMDY2NTkyLCAzOS43MTE4OTJdLCBbLTcuMDI2NDEzLCA0MC4xODQ1MjRdLCBbLTYuODY0MDIsIDQwLjMzMDg3Ml0sIFstNi44NTExMjcsIDQxLjExMTA4M10sIFstNi4zODkwODgsIDQxLjM4MTgxNV0sIFstNi42Njg2MDYsIDQxLjg4MzM4N10sIFstNy4yNTEzMDksIDQxLjkxODM0Nl0sIFstNy40MjI1MTMsIDQxLjc5MjA3NV0sIFstOC4wMTMxNzUsIDQxLjc5MDg4Nl0sIFstOC4yNjM4NTcsIDQyLjI4MDQ2OV0sIFstOC42NzE5NDYsIDQyLjEzNDY4OV0sIFstOS4wMzQ4MTgsIDQxLjg4MDU3MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJTcGFpbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjQuMzEyODYzLCA1Ny43OTM0MjRdLCBbMjQuNDI4OTI4LCA1OC4zODM0MTNdLCBbMjQuMDYxMTk4LCA1OC4yNTczNzVdLCBbMjMuNDI2NTYsIDU4LjYxMjc1M10sIFsyMy4zMzk3OTUsIDU5LjE4NzI0XSwgWzI0LjYwNDIxNCwgNTkuNDY1ODU0XSwgWzI1Ljg2NDE4OSwgNTkuNjExMDldLCBbMjYuOTQ5MTM2LCA1OS40NDU4MDNdLCBbMjcuOTgxMTE0LCA1OS40NzUzODhdLCBbMjguMTMxNjk5LCA1OS4zMDA4MjVdLCBbMjcuNDIwMTY2LCA1OC43MjQ1ODFdLCBbMjcuNzE2Njg2LCA1Ny43OTE4OTldLCBbMjcuMjg4MTg1LCA1Ny40NzQ1MjhdLCBbMjYuNDYzNTMyLCA1Ny40NzYzODldLCBbMjUuNjAyODEsIDU3Ljg0NzUyOV0sIFsyNS4xNjQ1OTQsIDU3Ljk3MDE1N10sIFsyNC4zMTI4NjMsIDU3Ljc5MzQyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNUIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFc3RvbmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNy45MDYwNywgMTQuOTU5NDNdLCBbMzguNTEyOTUsIDE0LjUwNTQ3XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM5LjM0MDYxLCAxNC41MzE1NV0sIFs0MC4wMjYyNSwgMTQuNTE5NTldLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDEuMTU1MiwgMTMuNzczMzNdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQyLjAwOTc1LCAxMi44NjU4Ml0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIsIDEyLjFdLCBbNDEuNjYxNzYsIDExLjYzMTJdLCBbNDEuNzM5NTksIDExLjM1NTExXSwgWzQxLjc1NTU3LCAxMS4wNTA5MV0sIFs0Mi4zMTQxNCwgMTEuMDM0Ml0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuNzc2ODUyLCAxMC45MjY4NzldLCBbNDIuNTU4NzYsIDEwLjU3MjU4XSwgWzQyLjkyODEyLCAxMC4wMjE5NF0sIFs0My4yOTY5OSwgOS41NDA0OF0sIFs0My42Nzg3NSwgOS4xODM1OF0sIFs0Ni45NDgzNCwgNy45OTY4OF0sIFs0Ny43ODk0MiwgOC4wMDNdLCBbNDQuOTYzNiwgNS4wMDE2Ml0sIFs0My42NjA4NywgNC45NTc1NV0sIFs0Mi43Njk2NywgNC4yNTI1OV0sIFs0Mi4xMjg2MSwgNC4yMzQxM10sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQxLjE3MTgsIDMuOTE5MDldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbMzkuNTU5Mzg0LCAzLjQyMjA2XSwgWzM4Ljg5MjUxLCAzLjUwMDc0XSwgWzM4LjY3MTE0LCAzLjYxNjA3XSwgWzM4LjQzNjk3LCAzLjU4ODUxXSwgWzM4LjEyMDkxNSwgMy41OTg2MDVdLCBbMzYuODU1MDkzLCA0LjQ0Nzg2NF0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM1LjgxNzQ0OCwgNC43NzY5NjZdLCBbMzUuODE3NDQ4LCA1LjMzODIzMl0sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM0LjcwNzAyLCA2LjU5NDIyXSwgWzM0LjI1MDMyLCA2LjgyNjA3XSwgWzM0LjA3NTEsIDcuMjI1OTVdLCBbMzMuNTY4MjksIDcuNzEzMzRdLCBbMzIuOTU0MTgsIDcuNzg0OTddLCBbMzMuMjk0OCwgOC4zNTQ1OF0sIFszMy44MjU1LCA4LjM3OTE2XSwgWzMzLjk3NDk4LCA4LjY4NDU2XSwgWzMzLjk2MTYyLCA5LjU4MzU4XSwgWzM0LjI1NzQ1LCAxMC42MzAwOV0sIFszNC43MzExNSwgMTAuOTEwMTddLCBbMzQuODMxNjMsIDExLjMxODk2XSwgWzM1LjI2MDQ5LCAxMi4wODI4Nl0sIFszNS44NjM2MywgMTIuNTc4MjhdLCBbMzYuMjcwMjIsIDEzLjU2MzMzXSwgWzM2LjQyOTUxLCAxNC40MjIxMV0sIFszNy41OTM3NywgMTQuMjEzMV0sIFszNy45MDYwNywgMTQuOTU5NDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVUSCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXRoaW9waWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI4LjU5MTkzLCA2OS4wNjQ3NzddLCBbMjguNDQ1OTQ0LCA2OC4zNjQ2MTNdLCBbMjkuOTc3NDI2LCA2Ny42OTgyOTddLCBbMjkuMDU0NTg5LCA2Ni45NDQyODZdLCBbMzAuMjE3NjUsIDY1LjgwNTk4XSwgWzI5LjU0NDQzLCA2NC45NDg2NzJdLCBbMzAuNDQ0Njg1LCA2NC4yMDQ0NTNdLCBbMzAuMDM1ODcyLCA2My41NTI4MTRdLCBbMzEuNTE2MDkyLCA2Mi44Njc2ODddLCBbMzEuMTM5OTkxLCA2Mi4zNTc2OTNdLCBbMzAuMjExMTA3LCA2MS43ODAwMjhdLCBbMjguMDY5OTk4LCA2MC41MDM1MTddLCBbMjYuMjU1MTczLCA2MC40MjM5NjFdLCBbMjQuNDk2NjI0LCA2MC4wNTczMTZdLCBbMjIuODY5Njk1LCA1OS44NDYzNzNdLCBbMjIuMjkwNzY0LCA2MC4zOTE5MjFdLCBbMjEuMzIyMjQ0LCA2MC43MjAxN10sIFsyMS41NDQ4NjYsIDYxLjcwNTMyOV0sIFsyMS4wNTkyMTEsIDYyLjYwNzM5M10sIFsyMS41MzYwMjksIDYzLjE4OTczNV0sIFsyMi40NDI3NDQsIDYzLjgxNzgxXSwgWzI0LjczMDUxMiwgNjQuOTAyMzQ0XSwgWzI1LjM5ODA2OCwgNjUuMTExNDI3XSwgWzI1LjI5NDA0MywgNjUuNTM0MzQ2XSwgWzIzLjkwMzM3OSwgNjYuMDA2OTI3XSwgWzIzLjU2NTg4LCA2Ni4zOTYwNTFdLCBbMjMuNTM5NDczLCA2Ny45MzYwMDldLCBbMjEuOTc4NTM1LCA2OC42MTY4NDZdLCBbMjAuNjQ1NTkzLCA2OS4xMDYyNDddLCBbMjEuMjQ0OTM2LCA2OS4zNzA0NDNdLCBbMjIuMzU2MjM4LCA2OC44NDE3NDFdLCBbMjMuNjYyMDUsIDY4Ljg5MTI0N10sIFsyNC43MzU2NzksIDY4LjY0OTU1N10sIFsyNS42ODkyMTMsIDY5LjA5MjExNF0sIFsyNi4xNzk2MjIsIDY5LjgyNTI5OV0sIFsyNy43MzIyOTIsIDcwLjE2NDE5M10sIFsyOS4wMTU1NzMsIDY5Ljc2NjQ5MV0sIFsyOC41OTE5MywgNjkuMDY0Nzc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJGSU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZpbmxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNzguMzczNiwgLTE3LjMzOTkyXSwgWzE3OC43MTgwNiwgLTE3LjYyODQ2XSwgWzE3OC41NTI3MSwgLTE4LjE1MDU5XSwgWzE3Ny45MzI2NiwgLTE4LjI4Nzk5XSwgWzE3Ny4zODE0NiwgLTE4LjE2NDMyXSwgWzE3Ny4yODUwNCwgLTE3LjcyNDY1XSwgWzE3Ny42NzA4NywgLTE3LjM4MTE0XSwgWzE3OC4xMjU1NywgLTE3LjUwNDgxXSwgWzE3OC4zNzM2LCAtMTcuMzM5OTJdXV0sIFtbWzE3OS4zNjQxNDMsIC0xNi44MDEzNTRdLCBbMTc4LjcyNTA1OSwgLTE3LjAxMjA0Ml0sIFsxNzguNTk2ODM5LCAtMTYuNjM5MTVdLCBbMTc5LjA5NjYwOSwgLTE2LjQzMzk4NF0sIFsxNzkuNDEzNTA5LCAtMTYuMzc5MDU0XSwgWzE4MCwgLTE2LjA2NzEzM10sIFsxODAsIC0xNi41NTUyMTddLCBbMTc5LjM2NDE0MywgLTE2LjgwMTM1NF1dXSwgW1tbLTE3OS45MTczNjksIC0xNi41MDE3ODNdLCBbLTE4MCwgLTE2LjU1NTIxN10sIFstMTgwLCAtMTYuMDY3MTMzXSwgWy0xNzkuNzkzMzIsIC0xNi4wMjA4ODJdLCBbLTE3OS45MTczNjksIC0xNi41MDE3ODNdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmlqaSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYxLjIsIC01MS44NV0sIFstNjAsIC01MS4yNV0sIFstNTkuMTUsIC01MS41XSwgWy01OC41NSwgLTUxLjFdLCBbLTU3Ljc1LCAtNTEuNTVdLCBbLTU4LjA1LCAtNTEuOV0sIFstNTkuNCwgLTUyLjJdLCBbLTU5Ljg1LCAtNTEuODVdLCBbLTYwLjcsIC01Mi4zXSwgWy02MS4yLCAtNTEuODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkZMSyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmFsa2xhbmQgSXNsYW5kcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4yNzEyMywgMi43Mzg3NDhdLCBbLTU0LjE4NDI4NCwgMy4xOTQxNzJdLCBbLTU0LjAxMTUwNCwgMy42MjI1N10sIFstNTQuMzk5NTQyLCA0LjIxMjYxMV0sIFstNTQuNDc4NjMzLCA0Ljg5Njc1Nl0sIFstNTMuOTU4MDQ1LCA1Ljc1NjU0OF0sIFstNTMuNjE4NDUzLCA1LjY0NjUyOV0sIFstNTIuODgyMTQxLCA1LjQwOTg1MV0sIFstNTEuODIzMzQzLCA0LjU2NTc2OF0sIFstNTEuNjU3Nzk3LCA0LjE1NjIzMl0sIFstNTIuMjQ5MzM4LCAzLjI0MTA5NF0sIFstNTIuNTU2NDI1LCAyLjUwNDcwNV1dXSwgW1tbOS41NjAwMTYsIDQyLjE1MjQ5Ml0sIFs5LjIyOTc1MiwgNDEuMzgwMDA3XSwgWzguNzc1NzIzLCA0MS41ODM2MTJdLCBbOC41NDQyMTMsIDQyLjI1NjUxN10sIFs4Ljc0NjAwOSwgNDIuNjI4MTIyXSwgWzkuMzkwMDAxLCA0My4wMDk5ODVdLCBbOS41NjAwMTYsIDQyLjE1MjQ5Ml1dXSwgW1tbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFs0LjI4NjAyMywgNDkuOTA3NDk3XSwgWzQuNzk5MjIyLCA0OS45ODUzNzNdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs1Ljg5Nzc1OSwgNDkuNDQyNjY3XSwgWzYuMTg2MzIsIDQ5LjQ2MzgwM10sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs3LjU5MzY3NiwgNDguMzMzMDE5XSwgWzcuNDY2NzU5LCA0Ny42MjA1ODJdLCBbNy4xOTIyMDIsIDQ3LjQ0OTc2Nl0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzYuNzY4NzE0LCA0Ny4yODc3MDhdLCBbNi4wMzczODksIDQ2LjcyNTc3OV0sIFs2LjAyMjYwOSwgNDYuMjcyOTldLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi44NDM1OTMsIDQ1Ljk5MTE0N10sIFs2LjgwMjM1NSwgNDUuNzA4NThdLCBbNy4wOTY2NTIsIDQ1LjMzMzA5OV0sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDA3NTYyLCA0NC4yNTQ3NjddLCBbNy41NDk1OTYsIDQ0LjEyNzkwMV0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzYuNTI5MjQ1LCA0My4xMjg4OTJdLCBbNC41NTY5NjMsIDQzLjM5OTY1MV0sIFszLjEwMDQxMSwgNDMuMDc1MjAxXSwgWzIuOTg1OTk5LCA0Mi40NzMwMTVdLCBbMS44MjY3OTMsIDQyLjM0MzM4NV0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzAuMzM4MDQ3LCA0Mi41Nzk1NDZdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuMzg0MjI1LCA0NC4wMjI2MV0sIFstMS4xOTM3OTgsIDQ2LjAxNDkxOF0sIFstMi4yMjU3MjQsIDQ3LjA2NDM2M10sIFstMi45NjMyNzYsIDQ3LjU3MDMyN10sIFstNC40OTE1NTUsIDQ3Ljk1NDk1NF0sIFstNC41OTIzNSwgNDguNjg0MTZdLCBbLTMuMjk1ODE0LCA0OC45MDE2OTJdLCBbLTEuNjE2NTExLCA0OC42NDQ0MjFdLCBbLTEuOTMzNDk0LCA0OS43NzYzNDJdLCBbLTAuOTg5NDY5LCA0OS4zNDczNzZdLCBbMS4zMzg3NjEsIDUwLjEyNzE3M10sIFsxLjYzOTAwMSwgNTAuOTQ2NjA2XSwgWzIuNTEzNTczLCA1MS4xNDg1MDZdLCBbMi42NTg0MjIsIDUwLjc5Njg0OF0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzMuNTg4MTg0LCA1MC4zNzg5OTJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZSQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJhbmNlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS4wOTM3NzMsIC0zLjk3ODgyN10sIFsxMC4wNjYxMzUsIC0yLjk2OTQ4M10sIFs5LjQwNTI0NSwgLTIuMTQ0MzEzXSwgWzguNzk3OTk2LCAtMS4xMTEzMDFdLCBbOC44MzAwODcsIC0wLjc3OTA3NF0sIFs5LjA0ODQyLCAtMC40NTkzNTFdLCBbOS4yOTEzNTEsIDAuMjY4NjY2XSwgWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzExLjI3NjQ0OSwgMi4yNjEwNTFdLCBbMTEuNzUxNjY1LCAyLjMyNjc1OF0sIFsxMi4zNTkzOCwgMi4xOTI4MTJdLCBbMTIuOTUxMzM0LCAyLjMyMTYxNl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEzLjAwMzExNCwgMS44MzA4OTZdLCBbMTMuMjgyNjMxLCAxLjMxNDE4NF0sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjMxNjQxOCwgLTAuNTUyNjI3XSwgWzE0LjQyNTQ1NiwgLTEuMzMzNDA3XSwgWzE0LjI5OTIxLCAtMS45OTgyNzZdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTMuMTA5NjE5LCAtMi40Mjg3NF0sIFsxMi41NzUyODQsIC0xLjk0ODUxMV0sIFsxMi40OTU3MDMsIC0yLjM5MTY4OF0sIFsxMS44MjA5NjQsIC0yLjUxNDE2MV0sIFsxMS40NzgwMzksIC0yLjc2NTYxOV0sIFsxMS44NTUxMjIsIC0zLjQyNjg3MV0sIFsxMS4wOTM3NzMsIC0zLjk3ODgyN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0FCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYWJvbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01LjY2MTk0OSwgNTQuNTU0NjAzXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XSwgWy02Ljk1MzczLCA1NC4wNzM3MDJdLCBbLTcuNTcyMTY4LCA1NC4wNTk5NTZdLCBbLTcuMzY2MDMxLCA1NC41OTU4NDFdLCBbLTcuNTcyMTY4LCA1NS4xMzE2MjJdLCBbLTYuNzMzODQ3LCA1NS4xNzI4Nl0sIFstNS42NjE5NDksIDU0LjU1NDYwM11dXSwgW1tbLTMuMDA1MDA1LCA1OC42MzVdLCBbLTQuMDczODI4LCA1Ny41NTMwMjVdLCBbLTMuMDU1MDAyLCA1Ny42OTAwMTldLCBbLTEuOTU5MjgxLCA1Ny42ODQ4XSwgWy0yLjIxOTk4OCwgNTYuODcwMDE3XSwgWy0zLjExOTAwMywgNTUuOTczNzkzXSwgWy0yLjA4NTAwOSwgNTUuOTA5OTk4XSwgWy0yLjAwNTY3NiwgNTUuODA0OTAzXSwgWy0xLjExNDk5MSwgNTQuNjI0OTg2XSwgWy0wLjQzMDQ4NSwgNTQuNDY0Mzc2XSwgWzAuMTg0OTgxLCA1My4zMjUwMTRdLCBbMC40Njk5NzcsIDUyLjkyOTk5OV0sIFsxLjY4MTUzMSwgNTIuNzM5NTJdLCBbMS41NTk5ODgsIDUyLjA5OTk5OF0sIFsxLjA1MDU2MiwgNTEuODA2NzYxXSwgWzEuNDQ5ODY1LCA1MS4yODk0MjhdLCBbMC41NTAzMzQsIDUwLjc2NTczOV0sIFstMC43ODc1MTcsIDUwLjc3NDk4OV0sIFstMi40ODk5OTgsIDUwLjUwMDAxOV0sIFstMi45NTYyNzQsIDUwLjY5Njg4XSwgWy0zLjYxNzQ0OCwgNTAuMjI4MzU2XSwgWy00LjU0MjUwOCwgNTAuMzQxODM3XSwgWy01LjI0NTAyMywgNDkuOTZdLCBbLTUuNzc2NTY3LCA1MC4xNTk2NzhdLCBbLTQuMzA5OTksIDUxLjIxMDAwMV0sIFstMy40MTQ4NTEsIDUxLjQyNjAwOV0sIFstMy40MjI3MTksIDUxLjQyNjg0OF0sIFstNC45ODQzNjcsIDUxLjU5MzQ2Nl0sIFstNS4yNjcyOTYsIDUxLjk5MTRdLCBbLTQuMjIyMzQ3LCA1Mi4zMDEzNTZdLCBbLTQuNzcwMDEzLCA1Mi44NDAwMDVdLCBbLTQuNTc5OTk5LCA1My40OTUwMDRdLCBbLTMuMDkzODMxLCA1My40MDQ1NDddLCBbLTMuMDkyMDgsIDUzLjQwNDQ0MV0sIFstMi45NDUwMDksIDUzLjk4NV0sIFstMy42MTQ3MDEsIDU0LjYwMDkzN10sIFstMy42MzAwMDUsIDU0LjYxNTAxM10sIFstNC44NDQxNjksIDU0Ljc5MDk3MV0sIFstNS4wODI1MjcsIDU1LjA2MTYwMV0sIFstNC43MTkxMTIsIDU1LjUwODQ3M10sIFstNS4wNDc5ODEsIDU1Ljc4Mzk4Nl0sIFstNS41ODYzOTgsIDU1LjMxMTE0Nl0sIFstNS42NDQ5OTksIDU2LjI3NTAxNV0sIFstNi4xNDk5ODEsIDU2Ljc4NTAxXSwgWy01Ljc4NjgyNSwgNTcuODE4ODQ4XSwgWy01LjAwOTk5OSwgNTguNjMwMDEzXSwgWy00LjIxMTQ5NSwgNTguNTUwODQ1XSwgWy0zLjAwNTAwNSwgNTguNjM1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHQlIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlVuaXRlZCBLaW5nZG9tIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0MS41NTQwODQsIDQxLjUzNTY1Nl0sIFs0MS43MDMxNzEsIDQxLjk2Mjk0M10sIFs0MS40NTM0NywgNDIuNjQ1MTIzXSwgWzQwLjg3NTQ2OSwgNDMuMDEzNjI4XSwgWzQwLjMyMTM5NCwgNDMuMTI4NjM0XSwgWzM5Ljk1NTAwOSwgNDMuNDM0OTk4XSwgWzQwLjA3Njk2NSwgNDMuNTUzMTA0XSwgWzQwLjkyMjE4NSwgNDMuMzgyMTU5XSwgWzQyLjM5NDM5NSwgNDMuMjIwMzA4XSwgWzQzLjc1NjAxNywgNDIuNzQwODI4XSwgWzQzLjkzMTIsIDQyLjU1NDk3NF0sIFs0NC41Mzc2MjMsIDQyLjcxMTk5M10sIFs0NS40NzAyNzksIDQyLjUwMjc4MV0sIFs0NS43NzY0MSwgNDIuMDkyNDQ0XSwgWzQ2LjQwNDk1MSwgNDEuODYwNjc1XSwgWzQ2LjE0NTQzMiwgNDEuNzIyODAyXSwgWzQ2LjYzNzkwOCwgNDEuMTgxNjczXSwgWzQ2LjUwMTYzNywgNDEuMDY0NDQ1XSwgWzQ1Ljk2MjYwMSwgNDEuMTIzODczXSwgWzQ1LjIxNzQyNiwgNDEuNDExNDUyXSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDMuNTgyNzQ2LCA0MS4wOTIxNDNdLCBbNDIuNjE5NTQ5LCA0MS41ODMxNzNdLCBbNDEuNTU0MDg0LCA0MS41MzU2NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdFTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VvcmdpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4wNjAxMjIsIDUuOTI4ODM3XSwgWy0wLjUwNzYzOCwgNS4zNDM0NzNdLCBbLTEuMDYzNjI1LCA1LjAwMDU0OF0sIFstMS45NjQ3MDcsIDQuNzEwNDYyXSwgWy0yLjg1NjEyNSwgNC45OTQ0NzZdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi45NjM4OTYsIDEwLjM5NTMzNV0sIFstMi45NDA0MDksIDEwLjk2MjY5XSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0wLjc2MTU3NiwgMTAuOTM2OTNdLCBbLTAuNDM4NzAyLCAxMS4wOTgzNDFdLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC4wNDk3ODUsIDEwLjcwNjkxOF0sIFswLjM2NzU4LCAxMC4xOTEyMTNdLCBbMC4zNjU5MDEsIDkuNDY1MDA0XSwgWzAuNDYxMTkyLCA4LjY3NzIyM10sIFswLjcxMjAyOSwgOC4zMTI0NjVdLCBbMC40OTA5NTcsIDcuNDExNzQ0XSwgWzAuNTcwMzg0LCA2LjkxNDM1OV0sIFswLjgzNjkzMSwgNi4yNzk5NzldLCBbMS4wNjAxMjIsIDUuOTI4ODM3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHSEEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdoYW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjcyMjEyNCwgNy43MTE2NzRdLCBbLTguOTI2MDY1LCA3LjMwOTAzN10sIFstOS4yMDg3ODYsIDcuMzEzOTIxXSwgWy05LjQwMzM0OCwgNy41MjY5MDVdLCBbLTkuMzM3MjgsIDcuOTI4NTM0XSwgWy05Ljc1NTM0MiwgOC41NDEwNTVdLCBbLTEwLjAxNjU2NywgOC40Mjg1MDRdLCBbLTEwLjIzMDA5NCwgOC40MDYyMDZdLCBbLTEwLjUwNTQ3NywgOC4zNDg4OTZdLCBbLTEwLjQ5NDMxNSwgOC43MTU1NDFdLCBbLTEwLjY1NDc3LCA4Ljk3NzE3OF0sIFstMTAuNjIyMzk1LCA5LjI2NzkxXSwgWy0xMC44MzkxNTIsIDkuNjg4MjQ2XSwgWy0xMS4xMTc0ODEsIDEwLjA0NTg3M10sIFstMTEuOTE3Mjc3LCAxMC4wNDY5ODRdLCBbLTEyLjE1MDMzOCwgOS44NTg1NzJdLCBbLTEyLjQyNTkyOSwgOS44MzU4MzRdLCBbLTEyLjU5NjcxOSwgOS42MjAxODhdLCBbLTEyLjcxMTk1OCwgOS4zNDI3MTJdLCBbLTEzLjI0NjU1LCA4LjkwMzA0OV0sIFstMTMuNjg1MTU0LCA5LjQ5NDc0NF0sIFstMTQuMDc0MDQ1LCA5Ljg4NjE2N10sIFstMTQuMzMwMDc2LCAxMC4wMTU3Ml0sIFstMTQuNTc5Njk5LCAxMC4yMTQ0NjddLCBbLTE0LjY5MzIzMiwgMTAuNjU2MzAxXSwgWy0xNC44Mzk1NTQsIDEwLjg3NjU3Ml0sIFstMTUuMTMwMzExLCAxMS4wNDA0MTJdLCBbLTE0LjY4NTY4NywgMTEuNTI3ODI0XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuMTIxNDA2LCAxMS42NzcxMTddLCBbLTEzLjkwMDgsIDExLjY3ODcxOV0sIFstMTMuNzQzMTYxLCAxMS44MTEyNjldLCBbLTEzLjgyODI3MiwgMTIuMTQyNjQ0XSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuNzAwNDc2LCAxMi41ODYxODNdLCBbLTEzLjIxNzgxOCwgMTIuNTc1ODc0XSwgWy0xMi40OTkwNTEsIDEyLjMzMjA5XSwgWy0xMi4yNzg1OTksIDEyLjM1NDQ0XSwgWy0xMi4yMDM1NjUsIDEyLjQ2NTY0OF0sIFstMTEuNjU4MzAxLCAxMi4zODY1ODNdLCBbLTExLjUxMzk0MywgMTIuNDQyOTg4XSwgWy0xMS40NTYxNjksIDEyLjA3NjgzNF0sIFstMTEuMjk3NTc0LCAxMi4wNzc5NzFdLCBbLTExLjAzNjU1NiwgMTIuMjExMjQ1XSwgWy0xMC44NzA4MywgMTIuMTc3ODg3XSwgWy0xMC41OTMyMjQsIDExLjkyMzk3NV0sIFstMTAuMTY1MjE0LCAxMS44NDQwODRdLCBbLTkuODkwOTkzLCAxMi4wNjA0NzldLCBbLTkuNTY3OTEyLCAxMi4xOTQyNDNdLCBbLTkuMzI3NjE2LCAxMi4zMzQyODZdLCBbLTkuMTI3NDc0LCAxMi4zMDgwNl0sIFstOC45MDUyNjUsIDEyLjA4ODM1OF0sIFstOC43ODYwOTksIDExLjgxMjU2MV0sIFstOC4zNzYzMDUsIDExLjM5MzY0Nl0sIFstOC41ODEzMDUsIDExLjEzNjI0Nl0sIFstOC42MjAzMjEsIDEwLjgxMDg5MV0sIFstOC40MDczMTEsIDEwLjkwOTI1N10sIFstOC4yODIzNTcsIDEwLjc5MjU5N10sIFstOC4zMzUzNzcsIDEwLjQ5NDgxMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstOC4yMjkzMzcsIDEwLjEyOTAyXSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMDc5MTE0LCA5LjM3NjIyNF0sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4yMDM0OTksIDguNDU1NDUzXSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjIxNzkyLCA4LjEyMzMyOV0sIFstOC4yODA3MDMsIDcuNjg3MThdLCBbLTguNDM5Mjk4LCA3LjY4NjA0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0lOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdWluZWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNi44NDE1MjUsIDEzLjE1MTM5NF0sIFstMTYuNzEzNzI5LCAxMy41OTQ5NTldLCBbLTE1LjYyNDU5NiwgMTMuNjIzNTg3XSwgWy0xNS4zOTg3NywgMTMuODYwMzY5XSwgWy0xNS4wODE3MzUsIDEzLjg3NjQ5Ml0sIFstMTQuNjg3MDMxLCAxMy42MzAzNTddLCBbLTE0LjM3NjcxNCwgMTMuNjI1NjhdLCBbLTE0LjA0Njk5MiwgMTMuNzk0MDY4XSwgWy0xMy44NDQ5NjMsIDEzLjUwNTA0Ml0sIFstMTQuMjc3NzAyLCAxMy4yODA1ODVdLCBbLTE0LjcxMjE5NywgMTMuMjk4MjA3XSwgWy0xNS4xNDExNjMsIDEzLjUwOTUxMl0sIFstMTUuNTExODEzLCAxMy4yNzg1N10sIFstMTUuNjkxMDAxLCAxMy4yNzAzNTNdLCBbLTE1LjkzMTI5NiwgMTMuMTMwMjg0XSwgWy0xNi44NDE1MjUsIDEzLjE1MTM5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR01CIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYW1iaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNS4xMzAzMTEsIDExLjA0MDQxMl0sIFstMTUuNjY0MTgsIDExLjQ1ODQ3NF0sIFstMTYuMDg1MjE0LCAxMS41MjQ1OTRdLCBbLTE2LjMxNDc4NywgMTEuODA2NTE1XSwgWy0xNi4zMDg5NDcsIDExLjk1ODcwMl0sIFstMTYuNjEzODM4LCAxMi4xNzA5MTFdLCBbLTE2LjY3NzQ1MiwgMTIuMzg0ODUyXSwgWy0xNi4xNDc3MTcsIDEyLjU0Nzc2Ml0sIFstMTUuODE2NTc0LCAxMi41MTU1NjddLCBbLTE1LjU0ODQ3NywgMTIuNjI4MTddLCBbLTEzLjcwMDQ3NiwgMTIuNTg2MTgzXSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuODI4MjcyLCAxMi4xNDI2NDRdLCBbLTEzLjc0MzE2MSwgMTEuODExMjY5XSwgWy0xMy45MDA4LCAxMS42Nzg3MTldLCBbLTE0LjEyMTQwNiwgMTEuNjc3MTE3XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuNjg1Njg3LCAxMS41Mjc4MjRdLCBbLTE1LjEzMDMxMSwgMTEuMDQwNDEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHTkIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1aW5lYSBCaXNzYXUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuMzA1NjEzLCAxLjE2MDkxMV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFs5LjQ5Mjg4OSwgMS4wMTAxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR05RIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcXVhdG9yaWFsIEd1aW5lYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzIzLjY5OTk4LCAzNS43MDUwMDRdLCBbMjQuMjQ2NjY1LCAzNS4zNjgwMjJdLCBbMjUuMDI1MDE1LCAzNS40MjQ5OTZdLCBbMjUuNzY5MjA4LCAzNS4zNTQwMThdLCBbMjUuNzQ1MDIzLCAzNS4xNzk5OThdLCBbMjYuMjkwMDAzLCAzNS4yOTk5OV0sIFsyNi4xNjQ5OTgsIDM1LjAwNDk5NV0sIFsyNC43MjQ5ODIsIDM0LjkxOTk4OF0sIFsyNC43MzUwMDcsIDM1LjA4NDk5MV0sIFsyMy41MTQ5NzgsIDM1LjI3OTk5Ml0sIFsyMy42OTk5OCwgMzUuNzA1MDA0XV1dLCBbW1syNi42MDQxOTYsIDQxLjU2MjExNV0sIFsyNi4yOTQ2MDIsIDQwLjkzNjI2MV0sIFsyNi4wNTY5NDIsIDQwLjgyNDEyM10sIFsyNS40NDc2NzcsIDQwLjg1MjU0NV0sIFsyNC45MjU4NDgsIDQwLjk0NzA2Ml0sIFsyMy43MTQ4MTEsIDQwLjY4NzEyOV0sIFsyNC40MDc5OTksIDQwLjEyNDk5M10sIFsyMy44OTk5NjgsIDM5Ljk2MjAwNl0sIFsyMy4zNDI5OTksIDM5Ljk2MDk5OF0sIFsyMi44MTM5ODgsIDQwLjQ3NjAwNV0sIFsyMi42MjYyOTksIDQwLjI1NjU2MV0sIFsyMi44NDk3NDgsIDM5LjY1OTMxMV0sIFsyMy4zNTAwMjcsIDM5LjE5MDAxMV0sIFsyMi45NzMwOTksIDM4Ljk3MDkwM10sIFsyMy41MzAwMTYsIDM4LjUxMDAwMV0sIFsyNC4wMjUwMjUsIDM4LjIxOTk5M10sIFsyNC4wNDAwMTEsIDM3LjY1NTAxNV0sIFsyMy4xMTUwMDMsIDM3LjkyMDAxMV0sIFsyMy40MDk5NzIsIDM3LjQwOTk5MV0sIFsyMi43NzQ5NzIsIDM3LjMwNTAxXSwgWzIzLjE1NDIyNSwgMzYuNDIyNTA2XSwgWzIyLjQ5MDAyOCwgMzYuNDFdLCBbMjEuNjcwMDI2LCAzNi44NDQ5ODZdLCBbMjEuMjk1MDExLCAzNy42NDQ5ODldLCBbMjEuMTIwMDM0LCAzOC4zMTAzMjNdLCBbMjAuNzMwMDMyLCAzOC43Njk5ODVdLCBbMjAuMjE3NzEyLCAzOS4zNDAyMzVdLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuOTk5OTksIDQwLjU4MDAwNF0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIxLjY3NDE2MSwgNDAuOTMxMjc1XSwgWzIyLjA1NTM3OCwgNDEuMTQ5ODY2XSwgWzIyLjU5NzMwOCwgNDEuMTMwNDg3XSwgWzIyLjc2MTc3LCA0MS4zMDQ4XSwgWzIyLjk1MjM3NywgNDEuMzM3OTk0XSwgWzIzLjY5MjA3NCwgNDEuMzA5MDgxXSwgWzI0LjQ5MjY0NSwgNDEuNTgzODk2XSwgWzI1LjE5NzIwMSwgNDEuMjM0NDg2XSwgWzI2LjEwNjEzOCwgNDEuMzI4ODk5XSwgWzI2LjExNzA0MiwgNDEuODI2OTA1XSwgWzI2LjYwNDE5NiwgNDEuNTYyMTE1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHUkMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdyZWVjZSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQ2Ljc2Mzc5LCA4Mi42Mjc5Nl0sIFstNDMuNDA2NDQsIDgzLjIyNTE2XSwgWy0zOS44OTc1MywgODMuMTgwMThdLCBbLTM4LjYyMjE0LCA4My41NDkwNV0sIFstMzUuMDg3ODcsIDgzLjY0NTEzXSwgWy0yNy4xMDA0NiwgODMuNTE5NjZdLCBbLTIwLjg0NTM5LCA4Mi43MjY2OV0sIFstMjIuNjkxODIsIDgyLjM0MTY1XSwgWy0yNi41MTc1MywgODIuMjk3NjVdLCBbLTMxLjksIDgyLjJdLCBbLTMxLjM5NjQ2LCA4Mi4wMjE1NF0sIFstMjcuODU2NjYsIDgyLjEzMTc4XSwgWy0yNC44NDQ0OCwgODEuNzg2OTddLCBbLTIyLjkwMzI4LCA4Mi4wOTMxN10sIFstMjIuMDcxNzUsIDgxLjczNDQ5XSwgWy0yMy4xNjk2MSwgODEuMTUyNzFdLCBbLTIwLjYyMzYzLCA4MS41MjQ2Ml0sIFstMTUuNzY4MTgsIDgxLjkxMjQ1XSwgWy0xMi43NzAxOCwgODEuNzE4ODVdLCBbLTEyLjIwODU1LCA4MS4yOTE1NF0sIFstMTYuMjg1MzMsIDgwLjU4MDA0XSwgWy0xNi44NSwgODAuMzVdLCBbLTIwLjA0NjI0LCA4MC4xNzcwOF0sIFstMTcuNzMwMzUsIDgwLjEyOTEyXSwgWy0xOC45LCA3OS40XSwgWy0xOS43MDQ5OSwgNzguNzUxMjhdLCBbLTE5LjY3MzUzLCA3Ny42Mzg1OV0sIFstMTguNDcyODUsIDc2Ljk4NTY1XSwgWy0yMC4wMzUwMywgNzYuOTQ0MzRdLCBbLTIxLjY3OTQ0LCA3Ni42Mjc5NV0sIFstMTkuODM0MDcsIDc2LjA5ODA4XSwgWy0xOS41OTg5NiwgNzUuMjQ4MzhdLCBbLTIwLjY2ODE4LCA3NS4xNTU4NV0sIFstMTkuMzcyODEsIDc0LjI5NTYxXSwgWy0yMS41OTQyMiwgNzQuMjIzODJdLCBbLTIwLjQzNDU0LCA3My44MTcxM10sIFstMjAuNzYyMzQsIDczLjQ2NDM2XSwgWy0yMi4xNzIyMSwgNzMuMzA5NTVdLCBbLTIzLjU2NTkzLCA3My4zMDY2M10sIFstMjIuMzEzMTEsIDcyLjYyOTI4XSwgWy0yMi4yOTk1NCwgNzIuMTg0MDldLCBbLTI0LjI3ODM0LCA3Mi41OTc4OF0sIFstMjQuNzkyOTYsIDcyLjMzMDJdLCBbLTIzLjQ0Mjk2LCA3Mi4wODAxNl0sIFstMjIuMTMyODEsIDcxLjQ2ODk4XSwgWy0yMS43NTM1NiwgNzAuNjYzNjldLCBbLTIzLjUzNjAzLCA3MC40NzFdLCBbLTI0LjMwNzAyLCA3MC44NTY0OV0sIFstMjUuNTQzNDEsIDcxLjQzMDk0XSwgWy0yNS4yMDEzNSwgNzAuNzUyMjZdLCBbLTI2LjM2Mjc2LCA3MC4yMjY0Nl0sIFstMjMuNzI3NDIsIDcwLjE4NDAxXSwgWy0yMi4zNDkwMiwgNzAuMTI5NDZdLCBbLTI1LjAyOTI3LCA2OS4yNTg4XSwgWy0yNy43NDczNywgNjguNDcwNDZdLCBbLTMwLjY3MzcxLCA2OC4xMjUwM10sIFstMzEuNzc2NjUsIDY4LjEyMDc4XSwgWy0zMi44MTEwNSwgNjcuNzM1NDddLCBbLTM0LjIwMTk2LCA2Ni42Nzk3NF0sIFstMzYuMzUyODQsIDY1Ljk3ODldLCBbLTM3LjA0Mzc4LCA2NS45Mzc2OF0sIFstMzguMzc1MDUsIDY1LjY5MjEzXSwgWy0zOS44MTIyMiwgNjUuNDU4NDhdLCBbLTQwLjY2ODk5LCA2NC44Mzk5N10sIFstNDAuNjgyODEsIDY0LjEzOTAyXSwgWy00MS4xODg3LCA2My40ODI0Nl0sIFstNDIuODE5MzgsIDYyLjY4MjMzXSwgWy00Mi40MTY2NiwgNjEuOTAwOTNdLCBbLTQyLjg2NjE5LCA2MS4wNzQwNF0sIFstNDMuMzc4NCwgNjAuMDk3NzJdLCBbLTQ0Ljc4NzUsIDYwLjAzNjc2XSwgWy00Ni4yNjM2NCwgNjAuODUzMjhdLCBbLTQ4LjI2Mjk0LCA2MC44NTg0M10sIFstNDkuMjMzMDgsIDYxLjQwNjgxXSwgWy00OS45MDAzOSwgNjIuMzgzMzZdLCBbLTUxLjYzMzI1LCA2My42MjY5MV0sIFstNTIuMTQwMTQsIDY0LjI3ODQyXSwgWy01Mi4yNzY1OSwgNjUuMTc2N10sIFstNTMuNjYxNjYsIDY2LjA5OTU3XSwgWy01My4zMDE2MSwgNjYuODM2NV0sIFstNTMuOTY5MTEsIDY3LjE4ODk5XSwgWy01Mi45ODA0LCA2OC4zNTc1OV0sIFstNTEuNDc1MzYsIDY4LjcyOTU4XSwgWy01MS4wODA0MSwgNjkuMTQ3ODFdLCBbLTUwLjg3MTIyLCA2OS45MjkxXSwgWy01Mi4wMTM1ODUsIDY5LjU3NDkyNV0sIFstNTIuNTU3OTIsIDY5LjQyNjE2XSwgWy01My40NTYyOSwgNjkuMjgzNjI1XSwgWy01NC42ODMzNiwgNjkuNjEwMDNdLCBbLTU0Ljc1MDAxLCA3MC4yODkzMl0sIFstNTQuMzU4ODQsIDcwLjgyMTMxNV0sIFstNTMuNDMxMzE1LCA3MC44MzU3NTVdLCBbLTUxLjM5MDE0LCA3MC41Njk3OF0sIFstNTMuMTA5MzcsIDcxLjIwNDg1XSwgWy01NC4wMDQyMiwgNzEuNTQ3MTldLCBbLTU1LCA3MS40MDY1MzddLCBbLTU1LjgzNDY4LCA3MS42NTQ0NF0sIFstNTQuNzE4MTksIDcyLjU4NjI1XSwgWy01NS4zMjYzNCwgNzIuOTU4NjFdLCBbLTU2LjEyMDAzLCA3My42NDk3N10sIFstNTcuMzIzNjMsIDc0LjcxMDI2XSwgWy01OC41OTY3OSwgNzUuMDk4NjFdLCBbLTU4LjU4NTE2LCA3NS41MTcyN10sIFstNjEuMjY4NjEsIDc2LjEwMjM4XSwgWy02My4zOTE2NSwgNzYuMTc1Ml0sIFstNjYuMDY0MjcsIDc2LjEzNDg2XSwgWy02OC41MDQzOCwgNzYuMDYxNDFdLCBbLTY5LjY2NDg1LCA3Ni4zNzk3NV0sIFstNzEuNDAyNTcsIDc3LjAwODU3XSwgWy02OC43NzY3MSwgNzcuMzIzMTJdLCBbLTY2Ljc2Mzk3LCA3Ny4zNzU5NV0sIFstNzEuMDQyOTMsIDc3LjYzNTk1XSwgWy03My4yOTcsIDc4LjA0NDE5XSwgWy03My4xNTkzOCwgNzguNDMyNzFdLCBbLTY5LjM3MzQ1LCA3OC45MTM4OF0sIFstNjUuNzEwNywgNzkuMzk0MzZdLCBbLTY1LjMyMzksIDc5Ljc1ODE0XSwgWy02OC4wMjI5OCwgODAuMTE3MjFdLCBbLTY3LjE1MTI5LCA4MC41MTU4Ml0sIFstNjMuNjg5MjUsIDgxLjIxMzk2XSwgWy02Mi4yMzQ0NCwgODEuMzIxMV0sIFstNjIuNjUxMTYsIDgxLjc3MDQyXSwgWy02MC4yODI0OSwgODIuMDMzNjNdLCBbLTU3LjIwNzQ0LCA4Mi4xOTA3NF0sIFstNTQuMTM0NDIsIDgyLjE5OTYyXSwgWy01My4wNDMyOCwgODEuODg4MzNdLCBbLTUwLjM5MDYxLCA4Mi40Mzg4M10sIFstNDguMDAzODYsIDgyLjA2NDgxXSwgWy00Ni41OTk4NCwgODEuOTg1OTQ1XSwgWy00NC41MjMsIDgxLjY2MDddLCBbLTQ2LjkwMDcsIDgyLjE5OTc5XSwgWy00Ni43NjM3OSwgODIuNjI3OTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdSTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR3JlZW5sYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOTAuMDk1NTU1LCAxMy43MzUzMzhdLCBbLTkwLjYwODYyNCwgMTMuOTA5NzcxXSwgWy05MS4yMzI0MSwgMTMuOTI3ODMyXSwgWy05MS42ODk3NDcsIDE0LjEyNjIxOF0sIFstOTIuMjI3NzUsIDE0LjUzODgyOV0sIFstOTIuMjAzMjMsIDE0LjgzMDEwM10sIFstOTIuMDg3MjE2LCAxNS4wNjQ1ODVdLCBbLTkyLjIyOTI0OSwgMTUuMjUxNDQ3XSwgWy05MS43NDc5NiwgMTYuMDY2NTY1XSwgWy05MC40NjQ0NzMsIDE2LjA2OTU2Ml0sIFstOTAuNDM4ODY3LCAxNi40MTAxMV0sIFstOTAuNjAwODQ3LCAxNi40NzA3NzhdLCBbLTkwLjcxMTgyMiwgMTYuNjg3NDgzXSwgWy05MS4wODE2NywgMTYuOTE4NDc3XSwgWy05MS40NTM5MjEsIDE3LjI1MjE3N10sIFstOTEuMDAyMjY5LCAxNy4yNTQ2NThdLCBbLTkxLjAwMTUyLCAxNy44MTc1OTVdLCBbLTkwLjA2NzkzNCwgMTcuODE5MzI2XSwgWy04OS4xNDMwOCwgMTcuODA4MzE5XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMjI5MTIyLCAxNS44ODY5MzhdLCBbLTg4LjkzMDYxMywgMTUuODg3MjczXSwgWy04OC42MDQ1ODYsIDE1LjcwNjM4XSwgWy04OC41MTgzNjQsIDE1Ljg1NTM4OV0sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjY4MDY4LCAxNS4zNDYyNDddLCBbLTg5LjE1NDgxMSwgMTUuMDY2NDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNDU1MzUsIDE0LjY3ODAxOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjU4NzM0MywgMTQuMzYyNTg2XSwgWy04OS41MzQyMTksIDE0LjI0NDgxNl0sIFstODkuNzIxOTM0LCAxNC4xMzQyMjhdLCBbLTkwLjA2NDY3OCwgMTMuODgxOTddLCBbLTkwLjA5NTU1NSwgMTMuNzM1MzM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVE0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1YXRlbWFsYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU5Ljc1ODI4NSwgOC4zNjcwMzVdLCBbLTU5LjEwMTY4NCwgNy45OTkyMDJdLCBbLTU4LjQ4Mjk2MiwgNy4zNDc2OTFdLCBbLTU4LjQ1NDg3NiwgNi44MzI3ODddLCBbLTU4LjA3ODEwMywgNi44MDkwOTRdLCBbLTU3LjU0MjIxOSwgNi4zMjEyNjhdLCBbLTU3LjE0NzQzNiwgNS45NzMxNV0sIFstNTcuMzA3MjQ2LCA1LjA3MzU2N10sIFstNTcuOTE0Mjg5LCA0LjgxMjYyNl0sIFstNTcuODYwMjEsIDQuNTc2ODAxXSwgWy01OC4wNDQ2OTQsIDQuMDYwODY0XSwgWy01Ny42MDE1NjksIDMuMzM0NjU1XSwgWy01Ny4yODE0MzMsIDMuMzMzNDkyXSwgWy01Ny4xNTAwOTgsIDIuNzY4OTI3XSwgWy01Ni41MzkzODYsIDEuODk5NTIzXSwgWy01Ni43ODI3MDQsIDEuODYzNzExXSwgWy01Ny4zMzU4MjMsIDEuOTQ4NTM4XSwgWy01Ny42NjA5NzEsIDEuNjgyNTg1XSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU4LjQyOTQ3NywgMS40NjM5NDJdLCBbLTU4LjU0MDAxMywgMS4yNjgwODhdLCBbLTU5LjAzMDg2MiwgMS4zMTc2OThdLCBbLTU5LjY0NjA0NCwgMS43ODY4OTRdLCBbLTU5LjcxODU0NiwgMi4yNDk2M10sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuNTM4MDQsIDMuOTU4ODAzXSwgWy01OS43Njc0MDYsIDQuNDIzNTAzXSwgWy02MC4xMTEwMDIsIDQuNTc0OTY3XSwgWy01OS45ODA5NTksIDUuMDE0MDYxXSwgWy02MC4yMTM2ODMsIDUuMjQ0NDg2XSwgWy02MC43MzM1NzQsIDUuMjAwMjc3XSwgWy02MS40MTAzMDMsIDUuOTU5MDY4XSwgWy02MS4xMzk0MTUsIDYuMjM0Mjk3XSwgWy02MS4xNTkzMzYsIDYuNjk2MDc3XSwgWy02MC41NDM5OTksIDYuODU2NTg0XSwgWy02MC4yOTU2NjgsIDcuMDQzOTExXSwgWy02MC42Mzc5NzMsIDcuNDE1XSwgWy02MC41NTA1ODgsIDcuNzc5NjAzXSwgWy01OS43NTgyODUsIDguMzY3MDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVVkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1eWFuYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XSwgWy04Ny40ODk0MDksIDEzLjI5NzUzNV0sIFstODcuNzkzMTExLCAxMy4zODQ0OF0sIFstODcuNzIzNTAzLCAxMy43ODUwNV0sIFstODcuODU5NTE1LCAxMy44OTMzMTJdLCBbLTg4LjA2NTM0MywgMTMuOTY0NjI2XSwgWy04OC41MDM5OTgsIDEzLjg0NTQ4Nl0sIFstODguNTQxMjMxLCAxMy45ODAxNTVdLCBbLTg4Ljg0MzA3MywgMTQuMTQwNTA3XSwgWy04OS4wNTg1MTIsIDE0LjM0MDAyOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjE0NTUzNSwgMTQuNjc4MDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNTQ4MTEsIDE1LjA2NjQxOV0sIFstODguNjgwNjgsIDE1LjM0NjI0N10sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjEyMTE1MywgMTUuNjg4NjU1XSwgWy04Ny45MDE4MTMsIDE1Ljg2NDQ1OF0sIFstODcuNjE1NjgsIDE1Ljg3ODc5OV0sIFstODcuNTIyOTIxLCAxNS43OTcyNzldLCBbLTg3LjM2Nzc2MiwgMTUuODQ2OTRdLCBbLTg2LjkwMzE5MSwgMTUuNzU2NzEzXSwgWy04Ni40NDA5NDYsIDE1Ljc4MjgzNV0sIFstODYuMTE5MjM0LCAxNS44OTM0NDldLCBbLTg2LjAwMTk1NCwgMTYuMDA1NDA2XSwgWy04NS42ODMzMTcsIDE1Ljk1MzY1Ml0sIFstODUuNDQ0MDA0LCAxNS44ODU3NDldLCBbLTg1LjE4MjQ0NCwgMTUuOTA5MTU4XSwgWy04NC45ODM3MjIsIDE1Ljk5NTkyM10sIFstODQuNTI2OTgsIDE1Ljg1NzIyNF0sIFstODQuMzY4MjU2LCAxNS44MzUxNThdLCBbLTg0LjA2MzA1NSwgMTUuNjQ4MjQ0XSwgWy04My43NzM5NzcsIDE1LjQyNDA3Ml0sIFstODMuNDEwMzgxLCAxNS4yNzA5MDNdLCBbLTgzLjE0NzIxOSwgMTQuOTk1ODI5XSwgWy04My40ODk5ODksIDE1LjAxNjI2N10sIFstODMuNjI4NTg1LCAxNC44ODAwNzRdLCBbLTgzLjk3NTcyMSwgMTQuNzQ5NDM2XSwgWy04NC4yMjgzNDIsIDE0Ljc0ODc2NF0sIFstODQuNDQ5MzM2LCAxNC42MjE2MTRdLCBbLTg0LjY0OTU4MiwgMTQuNjY2ODA1XSwgWy04NC44MjAwMzcsIDE0LjgxOTU4N10sIFstODQuOTI0NTAxLCAxNC43OTA0OTNdLCBbLTg1LjA1Mjc4NywgMTQuNTUxNTQxXSwgWy04NS4xNDg3NTEsIDE0LjU2MDE5N10sIFstODUuMTY1MzY1LCAxNC4zNTQzN10sIFstODUuNTE0NDEzLCAxNC4wNzkwMTJdLCBbLTg1LjY5ODY2NSwgMTMuOTYwMDc4XSwgWy04NS44MDEyOTUsIDEzLjgzNjA1NV0sIFstODYuMDk2MjY0LCAxNC4wMzgxODddLCBbLTg2LjMxMjE0MiwgMTMuNzcxMzU2XSwgWy04Ni41MjA3MDgsIDEzLjc3ODQ4N10sIFstODYuNzU1MDg3LCAxMy43NTQ4NDVdLCBbLTg2LjczMzgyMiwgMTMuMjYzMDkzXSwgWy04Ni44ODA1NTcsIDEzLjI1NDIwNF0sIFstODcuMDA1NzY5LCAxMy4wMjU3OTRdLCBbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJITkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhvbmR1cmFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOC44Mjk4MzgsIDQ1LjkwODg3OF0sIFsxOS4wNzI3NjksIDQ1LjUyMTUxMV0sIFsxOS4zOTA0NzYsIDQ1LjIzNjUxNl0sIFsxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE3Ljg2MTc4MywgNDUuMDY3NzRdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTYuMjM5NjYsIDQ0LjM1MTE0M10sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjkxNjE1NiwgNDMuNjY3NzIyXSwgWzE3LjI5NzM3MywgNDMuNDQ2MzQxXSwgWzE3LjY3NDkyMiwgNDMuMDI4NTYzXSwgWzE4LjU2LCA0Mi42NV0sIFsxOC40NTAwMTYsIDQyLjQ3OTk5MV0sIFsxNy41MDk5NywgNDIuODQ5OTk1XSwgWzE2LjkzMDAwNiwgNDMuMjA5OTk4XSwgWzE2LjAxNTM4NSwgNDMuNTA3MjE1XSwgWzE1LjE3NDQ1NCwgNDQuMjQzMTkxXSwgWzE1LjM3NjI1LCA0NC4zMTc5MTVdLCBbMTQuOTIwMzA5LCA0NC43Mzg0ODRdLCBbMTQuOTAxNjAyLCA0NS4wNzYwNl0sIFsxNC4yNTg3NDgsIDQ1LjIzMzc3N10sIFsxMy45NTIyNTUsIDQ0LjgwMjEyNF0sIFsxMy42NTY5NzYsIDQ1LjEzNjkzNV0sIFsxMy42Nzk0MDMsIDQ1LjQ4NDE0OV0sIFsxMy43MTUwNiwgNDUuNTAwMzI0XSwgWzE0LjQxMTk2OCwgNDUuNDY2MTY2XSwgWzE0LjU5NTEwOSwgNDUuNjM0OTQxXSwgWzE0LjkzNTI0NCwgNDUuNDcxNjk1XSwgWzE1LjMyNzY3NSwgNDUuNDUyMzE2XSwgWzE1LjMyMzk1NCwgNDUuNzMxNzgzXSwgWzE1LjY3MTUzLCA0NS44MzQxNTRdLCBbMTUuNzY4NzMzLCA0Ni4yMzgxMDhdLCBbMTYuNTY0ODA4LCA0Ni41MDM3NTFdLCBbMTYuODgyNTE1LCA0Ni4zODA2MzJdLCBbMTcuNjMwMDY2LCA0NS45NTE3NjldLCBbMTguNDU2MDYyLCA0NS43NTk0ODFdLCBbMTguODI5ODM4LCA0NS45MDg4NzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkhSViIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3JvYXRpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTczLjE4OTc5MSwgMTkuOTE1Njg0XSwgWy03Mi41Nzk2NzMsIDE5Ljg3MTUwMV0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdLCBbLTcxLjYyNDg3MywgMTkuMTY5ODM4XSwgWy03MS43MDEzMDMsIDE4Ljc4NTQxN10sIFstNzEuOTQ1MTEyLCAxOC42MTY5XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS43MDgzMDUsIDE4LjA0NDk5N10sIFstNzIuMzcyNDc2LCAxOC4yMTQ5NjFdLCBbLTcyLjg0NDQxMSwgMTguMTQ1NjExXSwgWy03My40NTQ1NTUsIDE4LjIxNzkwNl0sIFstNzMuOTIyNDMzLCAxOC4wMzA5OTNdLCBbLTc0LjQ1ODAzNCwgMTguMzQyNTVdLCBbLTc0LjM2OTkyNSwgMTguNjY0OTA4XSwgWy03My40NDk1NDIsIDE4LjUyNjA1M10sIFstNzIuNjk0OTM3LCAxOC40NDU3OTldLCBbLTcyLjMzNDg4MiwgMTguNjY4NDIyXSwgWy03Mi43OTE2NSwgMTkuMTAxNjI1XSwgWy03Mi43ODQxMDUsIDE5LjQ4MzU5MV0sIFstNzMuNDE1MDIyLCAxOS42Mzk1NTFdLCBbLTczLjE4OTc5MSwgMTkuOTE1Njg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVEkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhhaXRpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNi4yMDIyOTgsIDQ2Ljg1MjM4Nl0sIFsxNi41MzQyNjgsIDQ3LjQ5NjE3MV0sIFsxNi4zNDA1ODQsIDQ3LjcxMjkwMl0sIFsxNi45MDM3NTQsIDQ3LjcxNDg2Nl0sIFsxNi45Nzk2NjcsIDQ4LjEyMzQ5N10sIFsxNy40ODg0NzMsIDQ3Ljg2NzQ2Nl0sIFsxNy44NTcxMzMsIDQ3Ljc1ODQyOV0sIFsxOC42OTY1MTMsIDQ3Ljg4MDk1NF0sIFsxOC43NzcwMjUsIDQ4LjA4MTc2OF0sIFsxOS4xNzQzNjUsIDQ4LjExMTM3OV0sIFsxOS42NjEzNjQsIDQ4LjI2NjYxNV0sIFsxOS43Njk0NzEsIDQ4LjIwMjY5MV0sIFsyMC4yMzkwNTQsIDQ4LjMyNzU2N10sIFsyMC40NzM1NjIsIDQ4LjU2Mjg1XSwgWzIwLjgwMTI5NCwgNDguNjIzODU0XSwgWzIxLjg3MjIzNiwgNDguMzE5OTcxXSwgWzIyLjA4NTYwOCwgNDguNDIyMjY0XSwgWzIyLjY0MDgyLCA0OC4xNTAyNF0sIFsyMi43MTA1MzEsIDQ3Ljg4MjE5NF0sIFsyMi4wOTk3NjgsIDQ3LjY3MjQzOV0sIFsyMS42MjY1MTUsIDQ2Ljk5NDIzOF0sIFsyMS4wMjE5NTIsIDQ2LjMxNjA4OF0sIFsyMC4yMjAxOTIsIDQ2LjEyNzQ2OV0sIFsxOS41OTYwNDUsIDQ2LjE3MTczXSwgWzE4LjgyOTgzOCwgNDUuOTA4ODc4XSwgWzE4LjQ1NjA2MiwgNDUuNzU5NDgxXSwgWzE3LjYzMDA2NiwgNDUuOTUxNzY5XSwgWzE2Ljg4MjUxNSwgNDYuMzgwNjMyXSwgWzE2LjU2NDgwOCwgNDYuNTAzNzUxXSwgWzE2LjM3MDUwNSwgNDYuODQxMzI3XSwgWzE2LjIwMjI5OCwgNDYuODUyMzg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkh1bmdhcnkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMjAuNzE1NjA5LCAtMTAuMjM5NTgxXSwgWzEyMC4yOTUwMTQsIC0xMC4yNTg2NV0sIFsxMTguOTY3ODA4LCAtOS41NTc5NjldLCBbMTE5LjkwMDMxLCAtOS4zNjEzNF0sIFsxMjAuNDI1NzU2LCAtOS42NjU5MjFdLCBbMTIwLjc3NTUwMiwgLTkuOTY5Njc1XSwgWzEyMC43MTU2MDksIC0xMC4yMzk1ODFdXV0sIFtbWzEyNC40MzU5NSwgLTEwLjE0MDAwMV0sIFsxMjMuNTc5OTgyLCAtMTAuMzU5OTg3XSwgWzEyMy40NTk5ODksIC0xMC4yMzk5OTVdLCBbMTIzLjU1MDAwOSwgLTkuOTAwMDE2XSwgWzEyMy45ODAwMDksIC05LjI5MDAyN10sIFsxMjQuOTY4NjgyLCAtOC44OTI3OV0sIFsxMjUuMDcwMDIsIC05LjA4OTk4N10sIFsxMjUuMDg4NTIsIC05LjM5MzE3M10sIFsxMjQuNDM1OTUsIC0xMC4xNDAwMDFdXV0sIFtbWzExNy45MDAwMTgsIC04LjA5NTY4MV0sIFsxMTguMjYwNjE2LCAtOC4zNjIzODNdLCBbMTE4Ljg3ODQ2LCAtOC4yODA2ODNdLCBbMTE5LjEyNjUwNywgLTguNzA1ODI1XSwgWzExNy45NzA0MDIsIC04LjkwNjYzOV0sIFsxMTcuMjc3NzMxLCAtOS4wNDA4OTVdLCBbMTE2Ljc0MDE0MSwgLTkuMDMyOTM3XSwgWzExNy4wODM3MzcsIC04LjQ1NzE1OF0sIFsxMTcuNjMyMDI0LCAtOC40NDkzMDNdLCBbMTE3LjkwMDAxOCwgLTguMDk1NjgxXV1dLCBbW1sxMjIuOTAzNTM3LCAtOC4wOTQyMzRdLCBbMTIyLjc1Njk4MywgLTguNjQ5ODA4XSwgWzEyMS4yNTQ0OTEsIC04LjkzMzY2Nl0sIFsxMTkuOTI0MzkxLCAtOC44MTA0MThdLCBbMTE5LjkyMDkyOSwgLTguNDQ0ODU5XSwgWzEyMC43MTUwOTIsIC04LjIzNjk2NV0sIFsxMjEuMzQxNjY5LCAtOC41MzY3NF0sIFsxMjIuMDA3MzY1LCAtOC40NjA2Ml0sIFsxMjIuOTAzNTM3LCAtOC4wOTQyMzRdXV0sIFtbWzEwOC42MjM0NzksIC02Ljc3NzY3NF0sIFsxMTAuNTM5MjI3LCAtNi44NzczNThdLCBbMTEwLjc1OTU3NiwgLTYuNDY1MTg2XSwgWzExMi42MTQ4MTEsIC02Ljk0NjAzNl0sIFsxMTIuOTc4NzY4LCAtNy41OTQyMTNdLCBbMTE0LjQ3ODkzNSwgLTcuNzc2NTI4XSwgWzExNS43MDU1MjcsIC04LjM3MDgwN10sIFsxMTQuNTY0NTExLCAtOC43NTE4MTddLCBbMTEzLjQ2NDczNCwgLTguMzQ4OTQ3XSwgWzExMi41NTk2NzIsIC04LjM3NjE4MV0sIFsxMTEuNTIyMDYxLCAtOC4zMDIxMjldLCBbMTEwLjU4NjE1LCAtOC4xMjI2MDVdLCBbMTA5LjQyNzY2NywgLTcuNzQwNjY0XSwgWzEwOC42OTM2NTUsIC03LjY0MTZdLCBbMTA4LjI3Nzc2MywgLTcuNzY2NjU3XSwgWzEwNi40NTQxMDIsIC03LjM1NDldLCBbMTA2LjI4MDYyNCwgLTYuOTI0OV0sIFsxMDUuMzY1NDg2LCAtNi44NTE0MTZdLCBbMTA2LjA1MTY0NiwgLTUuODk1OTE5XSwgWzEwNy4yNjUwMDksIC01Ljk1NDk4NV0sIFsxMDguMDcyMDkxLCAtNi4zNDU3NjJdLCBbMTA4LjQ4Njg0NiwgLTYuNDIxOTg1XSwgWzEwOC42MjM0NzksIC02Ljc3NzY3NF1dXSwgW1tbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXSwgWzEzNC4yMTAxMzQsIC02Ljg5NTIzOF0sIFsxMzQuMTEyNzc2LCAtNi4xNDI0NjddLCBbMTM0LjI5MDMzNiwgLTUuNzgzMDU4XSwgWzEzNC40OTk2MjUsIC01LjQ0NTA0Ml0sIFsxMzQuNzI3MDAyLCAtNS43Mzc1ODJdLCBbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXV1dLCBbW1sxMjcuMjQ5MjE1LCAtMy40NTkwNjVdLCBbMTI2Ljg3NDkyMywgLTMuNzkwOTgzXSwgWzEyNi4xODM4MDIsIC0zLjYwNzM3Nl0sIFsxMjUuOTg5MDM0LCAtMy4xNzcyNzNdLCBbMTI3LjAwMDY1MSwgLTMuMTI5MzE4XSwgWzEyNy4yNDkyMTUsIC0zLjQ1OTA2NV1dXSwgW1tbMTMwLjQ3MTM0NCwgLTMuMDkzNzY0XSwgWzEzMC44MzQ4MzYsIC0zLjg1ODQ3Ml0sIFsxMjkuOTkwNTQ3LCAtMy40NDYzMDFdLCBbMTI5LjE1NTI0OSwgLTMuMzYyNjM3XSwgWzEyOC41OTA2ODQsIC0zLjQyODY3OV0sIFsxMjcuODk4ODkxLCAtMy4zOTM0MzZdLCBbMTI4LjEzNTg3OSwgLTIuODQzNjVdLCBbMTI5LjM3MDk5OCwgLTIuODAyMTU0XSwgWzEzMC40NzEzNDQsIC0zLjA5Mzc2NF1dXSwgW1tbMTM0LjE0MzM2OCwgLTEuMTUxODY3XSwgWzEzNC40MjI2MjcsIC0yLjc2OTE4NV0sIFsxMzUuNDU3NjAzLCAtMy4zNjc3NTNdLCBbMTM2LjI5MzMxNCwgLTIuMzA3MDQyXSwgWzEzNy40NDA3MzgsIC0xLjcwMzUxM10sIFsxMzguMzI5NzI3LCAtMS43MDI2ODZdLCBbMTM5LjE4NDkyMSwgLTIuMDUxMjk2XSwgWzEzOS45MjY2ODQsIC0yLjQwOTA1Ml0sIFsxNDEuMDAwMjEsIC0yLjYwMDE1MV0sIFsxNDEuMDE3MDU3LCAtNS44NTkwMjJdLCBbMTQxLjAzMzg1MiwgLTkuMTE3ODkzXSwgWzE0MC4xNDM0MTUsIC04LjI5NzE2OF0sIFsxMzkuMTI3NzY3LCAtOC4wOTYwNDNdLCBbMTM4Ljg4MTQ3NywgLTguMzgwOTM1XSwgWzEzNy42MTQ0NzQsIC04LjQxMTY4M10sIFsxMzguMDM5MDk5LCAtNy41OTc4ODJdLCBbMTM4LjY2ODYyMSwgLTcuMzIwMjI1XSwgWzEzOC40MDc5MTQsIC02LjIzMjg0OV0sIFsxMzcuOTI3ODQsIC01LjM5MzM2Nl0sIFsxMzUuOTg5MjUsIC00LjU0NjU0NF0sIFsxMzUuMTY0NTk4LCAtNC40NjI5MzFdLCBbMTMzLjY2Mjg4LCAtMy41Mzg4NTNdLCBbMTMzLjM2NzcwNSwgLTQuMDI0ODE5XSwgWzEzMi45ODM5NTYsIC00LjExMjk3OV0sIFsxMzIuNzU2OTQxLCAtMy43NDYyODNdLCBbMTMyLjc1Mzc4OSwgLTMuMzExNzg3XSwgWzEzMS45ODk4MDQsIC0yLjgyMDU1MV0sIFsxMzMuMDY2ODQ1LCAtMi40NjA0MThdLCBbMTMzLjc4MDAzMSwgLTIuNDc5ODQ4XSwgWzEzMy42OTYyMTIsIC0yLjIxNDU0Ml0sIFsxMzIuMjMyMzczLCAtMi4yMTI1MjZdLCBbMTMxLjgzNjIyMiwgLTEuNjE3MTYyXSwgWzEzMC45NDI4NCwgLTEuNDMyNTIyXSwgWzEzMC41MTk1NTgsIC0wLjkzNzcyXSwgWzEzMS44Njc1MzgsIC0wLjY5NTQ2MV0sIFsxMzIuMzgwMTE2LCAtMC4zNjk1MzhdLCBbMTMzLjk4NTU0OCwgLTAuNzgwMjFdLCBbMTM0LjE0MzM2OCwgLTEuMTUxODY3XV1dLCBbW1sxMjUuMjQwNTAxLCAxLjQxOTgzNl0sIFsxMjQuNDM3MDM1LCAwLjQyNzg4MV0sIFsxMjMuNjg1NTA1LCAwLjIzNTU5M10sIFsxMjIuNzIzMDgzLCAwLjQzMTEzN10sIFsxMjEuMDU2NzI1LCAwLjM4MTIxN10sIFsxMjAuMTgzMDgzLCAwLjIzNzI0N10sIFsxMjAuMDQwODcsIC0wLjUxOTY1OF0sIFsxMjAuOTM1OTA1LCAtMS40MDg5MDZdLCBbMTIxLjQ3NTgyMSwgLTAuOTU1OTYyXSwgWzEyMy4zNDA1NjUsIC0wLjYxNTY3M10sIFsxMjMuMjU4Mzk5LCAtMS4wNzYyMTNdLCBbMTIyLjgyMjcxNSwgLTAuOTMwOTUxXSwgWzEyMi4zODg1MywgLTEuNTE2ODU4XSwgWzEyMS41MDgyNzQsIC0xLjkwNDQ4M10sIFsxMjIuNDU0NTcyLCAtMy4xODYwNThdLCBbMTIyLjI3MTg5NiwgLTMuNTI5NV0sIFsxMjMuMTcwOTYzLCAtNC42ODM2OTNdLCBbMTIzLjE2MjMzMywgLTUuMzQwNjA0XSwgWzEyMi42Mjg1MTUsIC01LjYzNDU5MV0sIFsxMjIuMjM2Mzk0LCAtNS4yODI5MzNdLCBbMTIyLjcxOTU2OSwgLTQuNDY0MTcyXSwgWzEyMS43MzgyMzQsIC00Ljg1MTMzMV0sIFsxMjEuNDg5NDYzLCAtNC41NzQ1NTNdLCBbMTIxLjYxOTE3MSwgLTQuMTg4NDc4XSwgWzEyMC44OTgxODIsIC0zLjYwMjEwNV0sIFsxMjAuOTcyMzg5LCAtMi42Mjc2NDNdLCBbMTIwLjMwNTQ1MywgLTIuOTMxNjA0XSwgWzEyMC4zOTAwNDcsIC00LjA5NzU3OV0sIFsxMjAuNDMwNzE3LCAtNS41MjgyNDFdLCBbMTE5Ljc5NjU0MywgLTUuNjczNF0sIFsxMTkuMzY2OTA2LCAtNS4zNzk4NzhdLCBbMTE5LjY1MzYwNiwgLTQuNDU5NDE3XSwgWzExOS40OTg4MzUsIC0zLjQ5NDQxMl0sIFsxMTkuMDc4MzQ0LCAtMy40ODcwMjJdLCBbMTE4Ljc2Nzc2OSwgLTIuODAxOTk5XSwgWzExOS4xODA5NzQsIC0yLjE0NzEwNF0sIFsxMTkuMzIzMzk0LCAtMS4zNTMxNDddLCBbMTE5LjgyNTk5OSwgMC4xNTQyNTRdLCBbMTIwLjAzNTcwMiwgMC41NjY0NzddLCBbMTIwLjg4NTc3OSwgMS4zMDkyMjNdLCBbMTIxLjY2NjgxNywgMS4wMTM5NDRdLCBbMTIyLjkyNzU2NywgMC44NzUxOTJdLCBbMTI0LjA3NzUyMiwgMC45MTcxMDJdLCBbMTI1LjA2NTk4OSwgMS42NDMyNTldLCBbMTI1LjI0MDUwMSwgMS40MTk4MzZdXV0sIFtbWzEyOC42ODgyNDksIDEuMTMyMzg2XSwgWzEyOC42MzU5NTIsIDAuMjU4NDg2XSwgWzEyOC4xMjAxNywgMC4zNTY0MTNdLCBbMTI3Ljk2ODAzNCwgLTAuMjUyMDc3XSwgWzEyOC4zNzk5OTksIC0wLjc4MDAwNF0sIFsxMjguMTAwMDE2LCAtMC44OTk5OTZdLCBbMTI3LjY5NjQ3NSwgLTAuMjY2NTk4XSwgWzEyNy4zOTk0OSwgMS4wMTE3MjJdLCBbMTI3LjYwMDUxMiwgMS44MTA2OTFdLCBbMTI3LjkzMjM3OCwgMi4xNzQ1OTZdLCBbMTI4LjAwNDE1NiwgMS42Mjg1MzFdLCBbMTI4LjU5NDU1OSwgMS41NDA4MTFdLCBbMTI4LjY4ODI0OSwgMS4xMzIzODZdXV0sIFtbWzExNy44NzU2MjcsIDEuODI3NjQxXSwgWzExOC45OTY3NDcsIDAuOTAyMjE5XSwgWzExNy44MTE4NTgsIDAuNzg0MjQyXSwgWzExNy40NzgzMzksIDAuMTAyNDc1XSwgWzExNy41MjE2NDQsIC0wLjgwMzcyM10sIFsxMTYuNTYwMDQ4LCAtMS40ODc2NjFdLCBbMTE2LjUzMzc5NywgLTIuNDgzNTE3XSwgWzExNi4xNDgwODQsIC00LjAxMjcyNl0sIFsxMTYuMDAwODU4LCAtMy42NTcwMzddLCBbMTE0Ljg2NDgwMywgLTQuMTA2OTg0XSwgWzExNC40Njg2NTIsIC0zLjQ5NTcwNF0sIFsxMTMuNzU1NjcyLCAtMy40MzkxN10sIFsxMTMuMjU2OTk0LCAtMy4xMTg3NzZdLCBbMTEyLjA2ODEyNiwgLTMuNDc4MzkyXSwgWzExMS43MDMyOTEsIC0yLjk5NDQ0Ml0sIFsxMTEuMDQ4MjQsIC0zLjA0OTQyNl0sIFsxMTAuMjIzODQ2LCAtMi45MzQwMzJdLCBbMTEwLjA3MDkzNiwgLTEuNTkyODc0XSwgWzEwOS41NzE5NDgsIC0xLjMxNDkwN10sIFsxMDkuMDkxODc0LCAtMC40NTk1MDddLCBbMTA4Ljk1MjY1OCwgMC40MTUzNzVdLCBbMTA5LjA2OTEzNiwgMS4zNDE5MzRdLCBbMTA5LjY2MzI2LCAyLjAwNjQ2N10sIFsxMDkuODMwMjI3LCAxLjMzODEzNl0sIFsxMTAuNTE0MDYxLCAwLjc3MzEzMV0sIFsxMTEuMTU5MTM4LCAwLjk3NjQ3OF0sIFsxMTEuNzk3NTQ4LCAwLjkwNDQ0MV0sIFsxMTIuMzgwMjUyLCAxLjQxMDEyMV0sIFsxMTIuODU5ODA5LCAxLjQ5Nzc5XSwgWzExMy44MDU4NSwgMS4yMTc1NDldLCBbMTE0LjYyMTM1NSwgMS40MzA2ODhdLCBbMTE1LjEzNDAzNywgMi44MjE0ODJdLCBbMTE1LjUxOTA3OCwgMy4xNjkyMzhdLCBbMTE1Ljg2NTUxNywgNC4zMDY1NTldLCBbMTE3LjAxNTIxNCwgNC4zMDYwOTRdLCBbMTE3Ljg4MjAzNSwgNC4xMzc1NTFdLCBbMTE3LjMxMzIzMiwgMy4yMzQ0MjhdLCBbMTE4LjA0ODMzLCAyLjI4NzY5XSwgWzExNy44NzU2MjcsIDEuODI3NjQxXV1dLCBbW1sxMDUuODE3NjU1LCAtNS44NTIzNTZdLCBbMTA0LjcxMDM4NCwgLTUuODczMjg1XSwgWzEwMy44NjgyMTMsIC01LjAzNzMxNV0sIFsxMDIuNTg0MjYxLCAtNC4yMjAyNTldLCBbMTAyLjE1NjE3MywgLTMuNjE0MTQ2XSwgWzEwMS4zOTkxMTMsIC0yLjc5OTc3N10sIFsxMDAuOTAyNTAzLCAtMi4wNTAyNjJdLCBbMTAwLjE0MTk4MSwgLTAuNjUwMzQ4XSwgWzk5LjI2Mzc0LCAwLjE4MzE0Ml0sIFs5OC45NzAwMTEsIDEuMDQyODgyXSwgWzk4LjYwMTM1MSwgMS44MjM1MDddLCBbOTcuNjk5NTk4LCAyLjQ1MzE4NF0sIFs5Ny4xNzY5NDIsIDMuMzA4NzkxXSwgWzk2LjQyNDAxNywgMy44Njg4Nl0sIFs5NS4zODA4NzYsIDQuOTcwNzgyXSwgWzk1LjI5MzAyNiwgNS40Nzk4MjFdLCBbOTUuOTM2ODYzLCA1LjQzOTUxM10sIFs5Ny40ODQ4ODIsIDUuMjQ2MzIxXSwgWzk4LjM2OTE2OSwgNC4yNjgzN10sIFs5OS4xNDI1NTksIDMuNTkwMzVdLCBbOTkuNjkzOTk4LCAzLjE3NDMyOV0sIFsxMDAuNjQxNDM0LCAyLjA5OTM4MV0sIFsxMDEuNjU4MDEyLCAyLjA4MzY5N10sIFsxMDIuNDk4MjcxLCAxLjM5ODddLCBbMTAzLjA3Njg0LCAwLjU2MTM2MV0sIFsxMDMuODM4Mzk2LCAwLjEwNDU0Ml0sIFsxMDMuNDM3NjQ1LCAtMC43MTE5NDZdLCBbMTA0LjAxMDc4OSwgLTEuMDU5MjEyXSwgWzEwNC4zNjk5OTEsIC0xLjA4NDg0M10sIFsxMDQuNTM5NDksIC0xLjc4MjM3Ml0sIFsxMDQuODg3ODkzLCAtMi4zNDA0MjVdLCBbMTA1LjYyMjExMSwgLTIuNDI4ODQ0XSwgWzEwNi4xMDg1OTMsIC0zLjA2MTc3N10sIFsxMDUuODU3NDQ2LCAtNC4zMDU1MjVdLCBbMTA1LjgxNzY1NSwgLTUuODUyMzU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJJRE4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZG9uZXNpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNzcuODM3NDUxLCAzNS40OTQwMV0sIFs3OC45MTIyNjksIDM0LjMyMTkzNl0sIFs3OC44MTEwODYsIDMzLjUwNjE5OF0sIFs3OS4yMDg4OTIsIDMyLjk5NDM5NV0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc4LjQ1ODQ0NiwgMzIuNjE4MTY0XSwgWzc4LjczODg5NCwgMzEuNTE1OTA2XSwgWzc5LjcyMTM2NywgMzAuODgyNzE1XSwgWzgxLjExMTI1NiwgMzAuMTgzNDgxXSwgWzgwLjQ3NjcyMSwgMjkuNzI5ODY1XSwgWzgwLjA4ODQyNSwgMjguNzk0NDddLCBbODEuMDU3MjAzLCAyOC40MTYwOTVdLCBbODEuOTk5OTg3LCAyNy45MjU0NzldLCBbODMuMzA0MjQ5LCAyNy4zNjQ1MDZdLCBbODQuNjc1MDE4LCAyNy4yMzQ5MDFdLCBbODUuMjUxNzc5LCAyNi43MjYxOThdLCBbODYuMDI0MzkzLCAyNi42MzA5ODVdLCBbODcuMjI3NDcyLCAyNi4zOTc4OThdLCBbODguMDYwMjM4LCAyNi40MTQ2MTVdLCBbODguMTc0ODA0LCAyNi44MTA0MDVdLCBbODguMDQzMTMzLCAyNy40NDU4MTldLCBbODguMTIwNDQxLCAyNy44NzY1NDJdLCBbODguNzMwMzI2LCAyOC4wODY4NjVdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTIuMDMzNDg0LCAyNi44MzgzMV0sIFs5Mi4xMDM3MTIsIDI3LjQ1MjYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5NC41NjU5OSwgMjkuMjc3NDM4XSwgWzk1LjQwNDgwMiwgMjkuMDMxNzE3XSwgWzk2LjExNzY3OSwgMjkuNDUyODAyXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMjQ4ODMzLCAyOC40MTEwMzFdLCBbOTcuMzI3MTE0LCAyOC4yNjE1ODNdLCBbOTcuNDAyNTYxLCAyNy44ODI1MzZdLCBbOTcuMDUxOTg5LCAyNy42OTkwNTldLCBbOTcuMTMzOTk5LCAyNy4wODM3NzRdLCBbOTYuNDE5MzY2LCAyNy4yNjQ1ODldLCBbOTUuMTI0NzY4LCAyNi41NzM1NzJdLCBbOTUuMTU1MTUzLCAyNi4wMDEzMDddLCBbOTQuNjAzMjQ5LCAyNS4xNjI0OTVdLCBbOTQuNTUyNjU4LCAyNC42NzUyMzhdLCBbOTQuMTA2NzQyLCAyMy44NTA3NDFdLCBbOTMuMzI1MTg4LCAyNC4wNzg1NTZdLCBbOTMuMjg2MzI3LCAyMy4wNDM2NThdLCBbOTMuMDYwMjk0LCAyMi43MDMxMTFdLCBbOTMuMTY2MTI4LCAyMi4yNzg0Nl0sIFs5Mi42NzI3MjEsIDIyLjA0MTIzOV0sIFs5Mi4xNDYwMzUsIDIzLjYyNzQ5OV0sIFs5MS44Njk5MjgsIDIzLjYyNDM0Nl0sIFs5MS43MDY0NzUsIDIyLjk4NTI2NF0sIFs5MS4xNTg5NjMsIDIzLjUwMzUyN10sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjkxNTA5MywgMjQuMTMwNDE0XSwgWzkyLjM3NjIwMiwgMjQuOTc2NjkzXSwgWzkxLjc5OTU5NiwgMjUuMTQ3NDMyXSwgWzkwLjg3MjIxMSwgMjUuMTMyNjAxXSwgWzg5LjkyMDY5MywgMjUuMjY5NzVdLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguNjk5OTQsIDI0LjIzMzcxNV0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4Ljg3NjMxMiwgMjIuODc5MTQ2XSwgWzg5LjAzMTk2MSwgMjIuMDU1NzA4XSwgWzg4Ljg4ODc2NiwgMjEuNjkwNTg4XSwgWzg4LjIwODQ5NywgMjEuNzAzMTcyXSwgWzg2Ljk3NTcwNCwgMjEuNDk1NTYyXSwgWzg3LjAzMzE2OSwgMjAuNzQzMzA4XSwgWzg2LjQ5OTM1MSwgMjAuMTUxNjM4XSwgWzg1LjA2MDI2NiwgMTkuNDc4NTc5XSwgWzgzLjk0MTAwNiwgMTguMzAyMDFdLCBbODMuMTg5MjE3LCAxNy42NzEyMjFdLCBbODIuMTkyNzkyLCAxNy4wMTY2MzZdLCBbODIuMTkxMjQyLCAxNi41NTY2NjRdLCBbODEuNjkyNzE5LCAxNi4zMTAyMTldLCBbODAuNzkxOTk5LCAxNS45NTE5NzJdLCBbODAuMzI0ODk2LCAxNS44OTkxODVdLCBbODAuMDI1MDY5LCAxNS4xMzY0MTVdLCBbODAuMjMzMjc0LCAxMy44MzU3NzFdLCBbODAuMjg2Mjk0LCAxMy4wMDYyNjFdLCBbNzkuODYyNTQ3LCAxMi4wNTYyMTVdLCBbNzkuODU3OTk5LCAxMC4zNTcyNzVdLCBbNzkuMzQwNTEyLCAxMC4zMDg4NTRdLCBbNzguODg1MzQ1LCA5LjU0NjEzNl0sIFs3OS4xODk3MiwgOS4yMTY1NDRdLCBbNzguMjc3OTQxLCA4LjkzMzA0N10sIFs3Ny45NDExNjUsIDguMjUyOTU5XSwgWzc3LjUzOTg5OCwgNy45NjU1MzVdLCBbNzYuNTkyOTc5LCA4Ljg5OTI3Nl0sIFs3Ni4xMzAwNjEsIDEwLjI5OTYzXSwgWzc1Ljc0NjQ2NywgMTEuMzA4MjUxXSwgWzc1LjM5NjEwMSwgMTEuNzgxMjQ1XSwgWzc0Ljg2NDgxNiwgMTIuNzQxOTM2XSwgWzc0LjYxNjcxNywgMTMuOTkyNTgzXSwgWzc0LjQ0Mzg1OSwgMTQuNjE3MjIyXSwgWzczLjUzNDE5OSwgMTUuOTkwNjUyXSwgWzczLjExOTkwOSwgMTcuOTI4NTddLCBbNzIuODIwOTA5LCAxOS4yMDgyMzRdLCBbNzIuODI0NDc1LCAyMC40MTk1MDNdLCBbNzIuNjMwNTMzLCAyMS4zNTYwMDldLCBbNzEuMTc1MjczLCAyMC43NTc0NDFdLCBbNzAuNDcwNDU5LCAyMC44NzczMzFdLCBbNjkuMTY0MTMsIDIyLjA4OTI5OF0sIFs2OS42NDQ5MjgsIDIyLjQ1MDc3NV0sIFs2OS4zNDk1OTcsIDIyLjg0MzE4XSwgWzY4LjE3NjY0NSwgMjMuNjkxOTY1XSwgWzY4Ljg0MjU5OSwgMjQuMzU5MTM0XSwgWzcxLjA0MzI0LCAyNC4zNTY1MjRdLCBbNzAuODQ0Njk5LCAyNS4yMTUxMDJdLCBbNzAuMjgyODczLCAyNS43MjIyMjldLCBbNzAuMTY4OTI3LCAyNi40OTE4NzJdLCBbNjkuNTE0MzkzLCAyNi45NDA5NjZdLCBbNzAuNjE2NDk2LCAyNy45ODkxOTZdLCBbNzEuNzc3NjY2LCAyNy45MTMxOF0sIFs3Mi44MjM3NTIsIDI4Ljk2MTU5Ml0sIFs3My40NTA2MzgsIDI5Ljk3NjQxM10sIFs3NC40MjEzOCwgMzAuOTc5ODE1XSwgWzc0LjQwNTkyOSwgMzEuNjkyNjM5XSwgWzc1LjI1ODY0MiwgMzIuMjcxMTA1XSwgWzc0LjQ1MTU1OSwgMzIuNzY0OV0sIFs3NC4xMDQyOTQsIDMzLjQ0MTQ3M10sIFs3My43NDk5NDgsIDM0LjMxNzY5OV0sIFs3NC4yNDAyMDMsIDM0Ljc0ODg4N10sIFs3NS43NTcwNjEsIDM0LjUwNDkyM10sIFs3Ni44NzE3MjIsIDM0LjY1MzU0NF0sIFs3Ny44Mzc0NTEsIDM1LjQ5NDAxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJTkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZGlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2IxMDAyNiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4xOTc4ODUsIDUzLjg2NzU2NV0sIFstNi4wMzI5ODUsIDUzLjE1MzE2NF0sIFstNi43ODg4NTcsIDUyLjI2MDExOF0sIFstOC41NjE2MTcsIDUxLjY2OTMwMV0sIFstOS45NzcwODYsIDUxLjgyMDQ1NV0sIFstOS4xNjYyODMsIDUyLjg2NDYyOV0sIFstOS42ODg1MjUsIDUzLjg4MTM2M10sIFstOC4zMjc5ODcsIDU0LjY2NDUxOV0sIFstNy41NzIxNjgsIDU1LjEzMTYyMl0sIFstNy4zNjYwMzEsIDU0LjU5NTg0MV0sIFstNy41NzIxNjgsIDU0LjA1OTk1Nl0sIFstNi45NTM3MywgNTQuMDczNzAyXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUkwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyZWxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzUzLjkyMTU5OCwgMzcuMTk4OTE4XSwgWzU0LjgwMDMwNCwgMzcuMzkyNDIxXSwgWzU1LjUxMTU3OCwgMzcuOTY0MTE3XSwgWzU2LjE4MDM3NSwgMzcuOTM1MTI3XSwgWzU2LjYxOTM2NiwgMzguMTIxMzk0XSwgWzU3LjMzMDQzNCwgMzguMDI5MjI5XSwgWzU4LjQzNjE1NCwgMzcuNTIyMzA5XSwgWzU5LjIzNDc2MiwgMzcuNDEyOTg4XSwgWzYwLjM3NzYzOCwgMzYuNTI3MzgzXSwgWzYxLjEyMzA3MSwgMzYuNDkxNTk3XSwgWzYxLjIxMDgxNywgMzUuNjUwMDcyXSwgWzYwLjgwMzE5MywgMzQuNDA0MTAyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUzNjA3OCwgMzIuOTgxMjY5XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuOTQxOTQ1LCAzMS41NDgwNzVdLCBbNjEuNjk5MzE0LCAzMS4zNzk1MDZdLCBbNjEuNzgxMjIyLCAzMC43MzU4NV0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS4zNjkzMDksIDI5LjMwMzI3Nl0sIFs2MS43NzE4NjgsIDI4LjY5OTMzNF0sIFs2Mi43Mjc4MywgMjguMjU5NjQ1XSwgWzYyLjc1NTQyNiwgMjcuMzc4OTIzXSwgWzYzLjIzMzg5OCwgMjcuMjE3MDQ3XSwgWzYzLjMxNjYzMiwgMjYuNzU2NTMyXSwgWzYxLjg3NDE4NywgMjYuMjM5OTc1XSwgWzYxLjQ5NzM2MywgMjUuMDc4MjM3XSwgWzU5LjYxNjEzNCwgMjUuMzgwMTU3XSwgWzU4LjUyNTc2MSwgMjUuNjA5OTYyXSwgWzU3LjM5NzI1MSwgMjUuNzM5OTAyXSwgWzU2Ljk3MDc2NiwgMjYuOTY2MTA2XSwgWzU2LjQ5MjEzOSwgMjcuMTQzMzA1XSwgWzU1LjcyMzcxLCAyNi45NjQ2MzNdLCBbNTQuNzE1MDksIDI2LjQ4MDY1OF0sIFs1My40OTMwOTcsIDI2LjgxMjM2OV0sIFs1Mi40ODM1OTgsIDI3LjU4MDg0OV0sIFs1MS41MjA3NjMsIDI3Ljg2NTY5XSwgWzUwLjg1Mjk0OCwgMjguODE0NTIxXSwgWzUwLjExNTAwOSwgMzAuMTQ3NzczXSwgWzQ5LjU3Njg1LCAyOS45ODU3MTVdLCBbNDguOTQxMzMzLCAzMC4zMTcwOV0sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0NS42NDg0NiwgMzQuNzQ4MTM4XSwgWzQ2LjE1MTc4OCwgMzUuMDkzMjU5XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDUuNDIwNjE4LCAzNS45Nzc1NDZdLCBbNDQuNzcyNjcsIDM3LjE3MDQ1XSwgWzQ0LjIyNTc1NiwgMzcuOTcxNTg0XSwgWzQ0LjQyMTQwMywgMzguMjgxMjgxXSwgWzQ0LjEwOTIyNSwgMzkuNDI4MTM2XSwgWzQ0Ljc5Mzk5LCAzOS43MTMwMDNdLCBbNDQuOTUyNjg4LCAzOS4zMzU3NjVdLCBbNDUuNDU3NzIyLCAzOC44NzQxMzldLCBbNDYuMTQzNjIzLCAzOC43NDEyMDFdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ny42ODUwNzksIDM5LjUwODM2NF0sIFs0OC4wNjAwOTUsIDM5LjU4MjIzNV0sIFs0OC4zNTU1MjksIDM5LjI4ODc2NV0sIFs0OC4wMTA3NDQsIDM4Ljc5NDAxNV0sIFs0OC42MzQzNzUsIDM4LjI3MDM3OF0sIFs0OC44ODMyNDksIDM4LjMyMDI0NV0sIFs0OS4xOTk2MTIsIDM3LjU4Mjg3NF0sIFs1MC4xNDc3NzEsIDM3LjM3NDU2N10sIFs1MC44NDIzNTQsIDM2Ljg3MjgxNF0sIFs1Mi4yNjQwMjUsIDM2LjcwMDQyMl0sIFs1My44MjU3OSwgMzYuOTY1MDMxXSwgWzUzLjkyMTU5OCwgMzcuMTk4OTE4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUk4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDYuMTUxNzg4LCAzNS4wOTMyNTldLCBbNDUuNjQ4NDYsIDM0Ljc0ODEzOF0sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0Ny45NzQ1MTksIDI5Ljk3NTgxOV0sIFs0Ny4zMDI2MjIsIDMwLjA1OTA3XSwgWzQ2LjU2ODcxMywgMjkuMDk5MDI1XSwgWzQ0LjcwOTQ5OSwgMjkuMTc4ODkxXSwgWzQxLjg4OTk4MSwgMzEuMTkwMDA5XSwgWzQwLjM5OTk5NCwgMzEuODg5OTkyXSwgWzM5LjE5NTQ2OCwgMzIuMTYxMDA5XSwgWzM4Ljc5MjM0MSwgMzMuMzc4Njg2XSwgWzQxLjAwNjE1OSwgMzQuNDE5MzcyXSwgWzQxLjM4Mzk2NSwgMzUuNjI4MzE3XSwgWzQxLjI4OTcwNywgMzYuMzU4ODE1XSwgWzQxLjgzNzA2NCwgMzYuNjA1ODU0XSwgWzQyLjM0OTU5MSwgMzcuMjI5ODczXSwgWzQyLjc3OTEyNiwgMzcuMzg1MjY0XSwgWzQzLjk0MjI1OSwgMzcuMjU2MjI4XSwgWzQ0LjI5MzQ1MiwgMzcuMDAxNTE0XSwgWzQ0Ljc3MjY5OSwgMzcuMTcwNDQ1XSwgWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUlEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYXEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml0sIFstMTQuNzM5NjM3LCA2NS44MDg3NDhdLCBbLTEzLjYwOTczMiwgNjUuMTI2NjcxXSwgWy0xNC45MDk4MzQsIDY0LjM2NDA4Ml0sIFstMTcuNzk0NDM4LCA2My42Nzg3NDldLCBbLTE4LjY1NjI0NiwgNjMuNDk2MzgzXSwgWy0xOS45NzI3NTUsIDYzLjY0MzYzNV0sIFstMjIuNzYyOTcyLCA2My45NjAxNzldLCBbLTIxLjc3ODQ4NCwgNjQuNDAyMTE2XSwgWy0yMy45NTUwNDQsIDY0Ljg5MTEzXSwgWy0yMi4xODQ0MDMsIDY1LjA4NDk2OF0sIFstMjIuMjI3NDIzLCA2NS4zNzg1OTRdLCBbLTI0LjMyNjE4NCwgNjUuNjExMTg5XSwgWy0yMy42NTA1MTUsIDY2LjI2MjUxOV0sIFstMjIuMTM0OTIyLCA2Ni40MTA0NjldLCBbLTIwLjU3NjI4NCwgNjUuNzMyMTEyXSwgWy0xOS4wNTY4NDIsIDY2LjI3NjYwMV0sIFstMTcuNzk4NjI0LCA2NS45OTM4NTNdLCBbLTE2LjE2NzgxOSwgNjYuNTI2NzkyXSwgWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVNMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJY2VsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNS43MTk5MTgsIDMyLjcwOTE5Ml0sIFszNS41NDU2NjUsIDMyLjM5Mzk5Ml0sIFszNS4xODM5MywgMzIuNTMyNTExXSwgWzM0Ljk3NDY0MSwgMzEuODY2NTgyXSwgWzM1LjIyNTg5MiwgMzEuNzU0MzQxXSwgWzM0Ljk3MDUwNywgMzEuNjE2Nzc4XSwgWzM0LjkyNzQwOCwgMzEuMzUzNDM1XSwgWzM1LjM5NzU2MSwgMzEuNDg5MDg2XSwgWzM1LjQyMDkxOCwgMzEuMTAwMDY2XSwgWzM0LjkyMjYwMywgMjkuNTAxMzI2XSwgWzM0LjI2NTQzMywgMzEuMjE5MzYxXSwgWzM0LjU1NjM3MiwgMzEuNTQ4ODI0XSwgWzM0LjQ4ODEwNywgMzEuNjA1NTM5XSwgWzM0Ljc1MjU4NywgMzIuMDcyOTI2XSwgWzM0Ljk1NTQxNywgMzIuODI3Mzc2XSwgWzM1LjA5ODQ1NywgMzMuMDgwNTM5XSwgWzM1LjEyNjA1MywgMzMuMDkwOV0sIFszNS40NjA3MDksIDMzLjA4OTA0XSwgWzM1LjU1Mjc5NywgMzMuMjY0Mjc1XSwgWzM1LjgyMTEwMSwgMzMuMjc3NDI2XSwgWzM1LjgzNjM5NywgMzIuODY4MTIzXSwgWzM1LjcwMDc5OCwgMzIuNzE2MDE0XSwgWzM1LjcxOTkxOCwgMzIuNzA5MTkyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJU1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklzcmFlbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzE1LjUyMDM3NiwgMzguMjMxMTU1XSwgWzE1LjE2MDI0MywgMzcuNDQ0MDQ2XSwgWzE1LjMwOTg5OCwgMzcuMTM0MjE5XSwgWzE1LjA5OTk4OCwgMzYuNjE5OTg3XSwgWzE0LjMzNTIyOSwgMzYuOTk2NjMxXSwgWzEzLjgyNjczMywgMzcuMTA0NTMxXSwgWzEyLjQzMTAwNCwgMzcuNjEyOTVdLCBbMTIuNTcwOTQ0LCAzOC4xMjYzODFdLCBbMTMuNzQxMTU2LCAzOC4wMzQ5NjZdLCBbMTQuNzYxMjQ5LCAzOC4xNDM4NzRdLCBbMTUuNTIwMzc2LCAzOC4yMzExNTVdXV0sIFtbWzkuMjEwMDEyLCA0MS4yMDk5OTFdLCBbOS44MDk5NzUsIDQwLjUwMDAwOV0sIFs5LjY2OTUxOSwgMzkuMTc3Mzc2XSwgWzkuMjE0ODE4LCAzOS4yNDA0NzNdLCBbOC44MDY5MzYsIDM4LjkwNjYxOF0sIFs4LjQyODMwMiwgMzkuMTcxODQ3XSwgWzguMzg4MjUzLCA0MC4zNzgzMTFdLCBbOC4xNTk5OTgsIDQwLjk1MDAwN10sIFs4LjcwOTk5MSwgNDAuODk5OTg0XSwgWzkuMjEwMDEyLCA0MS4yMDk5OTFdXV0sIFtbWzEyLjM3NjQ4NSwgNDYuNzY3NTU5XSwgWzEzLjgwNjQ3NSwgNDYuNTA5MzA2XSwgWzEzLjY5ODExLCA0Ni4wMTY3NzhdLCBbMTMuOTM3NjMsIDQ1LjU5MTAxNl0sIFsxMy4xNDE2MDYsIDQ1LjczNjY5Ml0sIFsxMi4zMjg1ODEsIDQ1LjM4MTc3OF0sIFsxMi4zODM4NzUsIDQ0Ljg4NTM3NF0sIFsxMi4yNjE0NTMsIDQ0LjYwMDQ4Ml0sIFsxMi41ODkyMzcsIDQ0LjA5MTM2Nl0sIFsxMy41MjY5MDYsIDQzLjU4NzcyN10sIFsxNC4wMjk4MjEsIDQyLjc2MTAwOF0sIFsxNS4xNDI1NywgNDEuOTU1MTRdLCBbMTUuOTI2MTkxLCA0MS45NjEzMTVdLCBbMTYuMTY5ODk3LCA0MS43NDAyOTVdLCBbMTUuODg5MzQ2LCA0MS41NDEwODJdLCBbMTYuNzg1MDAyLCA0MS4xNzk2MDZdLCBbMTcuNTE5MTY5LCA0MC44NzcxNDNdLCBbMTguMzc2Njg3LCA0MC4zNTU2MjVdLCBbMTguNDgwMjQ3LCA0MC4xNjg4NjZdLCBbMTguMjkzMzg1LCAzOS44MTA3NzRdLCBbMTcuNzM4MzgsIDQwLjI3NzY3MV0sIFsxNi44Njk1OTYsIDQwLjQ0MjIzNV0sIFsxNi40NDg3NDMsIDM5Ljc5NTQwMV0sIFsxNy4xNzE0OSwgMzkuNDI0N10sIFsxNy4wNTI4NDEsIDM4LjkwMjg3MV0sIFsxNi42MzUwODgsIDM4Ljg0MzU3Ml0sIFsxNi4xMDA5NjEsIDM3Ljk4NTg5OV0sIFsxNS42ODQwODcsIDM3LjkwODg0OV0sIFsxNS42ODc5NjMsIDM4LjIxNDU5M10sIFsxNS44OTE5ODEsIDM4Ljc1MDk0Ml0sIFsxNi4xMDkzMzIsIDM4Ljk2NDU0N10sIFsxNS43MTg4MTQsIDM5LjU0NDA3Ml0sIFsxNS40MTM2MTMsIDQwLjA0ODM1N10sIFsxNC45OTg0OTYsIDQwLjE3Mjk0OV0sIFsxNC43MDMyNjgsIDQwLjYwNDU1XSwgWzE0LjA2MDY3MiwgNDAuNzg2MzQ4XSwgWzEzLjYyNzk4NSwgNDEuMTg4Mjg3XSwgWzEyLjg4ODA4MiwgNDEuMjUzMDldLCBbMTIuMTA2NjgzLCA0MS43MDQ1MzVdLCBbMTEuMTkxOTA2LCA0Mi4zNTU0MjVdLCBbMTAuNTExOTQ4LCA0Mi45MzE0NjNdLCBbMTAuMjAwMDI5LCA0My45MjAwMDddLCBbOS43MDI0ODgsIDQ0LjAzNjI3OV0sIFs4Ljg4ODk0NiwgNDQuMzY2MzM2XSwgWzguNDI4NTYxLCA0NC4yMzEyMjhdLCBbNy44NTA3NjcsIDQzLjc2NzE0OF0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzcuNTQ5NTk2LCA0NC4xMjc5MDFdLCBbNy4wMDc1NjIsIDQ0LjI1NDc2N10sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDk2NjUyLCA0NS4zMzMwOTldLCBbNi44MDIzNTUsIDQ1LjcwODU4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNy4yNzM4NTEsIDQ1Ljc3Njk0OF0sIFs3Ljc1NTk5MiwgNDUuODI0NDldLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC45NjYzMDYsIDQ2LjAzNjkzMl0sIFs5LjE4Mjg4MiwgNDYuNDQwMjE1XSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbMTAuMzYzMzc4LCA0Ni40ODM1NzFdLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIklUQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSXRhbHkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03Ny41Njk2MDEsIDE4LjQ5MDUyNV0sIFstNzYuODk2NjE5LCAxOC40MDA4NjddLCBbLTc2LjM2NTM1OSwgMTguMTYwNzAxXSwgWy03Ni4xOTk2NTksIDE3Ljg4Njg2N10sIFstNzYuOTAyNTYxLCAxNy44NjgyMzhdLCBbLTc3LjIwNjM0MSwgMTcuNzAxMTE2XSwgWy03Ny43NjYwMjMsIDE3Ljg2MTU5N10sIFstNzguMzM3NzE5LCAxOC4yMjU5NjhdLCBbLTc4LjIxNzcyNywgMTguNDU0NTMzXSwgWy03Ny43OTczNjUsIDE4LjUyNDIxOF0sIFstNzcuNTY5NjAxLCAxOC40OTA1MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpBTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFtYWljYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdLCBbMzUuNzE5OTE4LCAzMi43MDkxOTJdLCBbMzYuODM0MDYyLCAzMi4zMTI5MzhdLCBbMzguNzkyMzQxLCAzMy4zNzg2ODZdLCBbMzkuMTk1NDY4LCAzMi4xNjEwMDldLCBbMzkuMDA0ODg2LCAzMi4wMTAyMTddLCBbMzcuMDAyMTY2LCAzMS41MDg0MTNdLCBbMzcuOTk4ODQ5LCAzMC41MDg1XSwgWzM3LjY2ODEyLCAzMC4zMzg2NjVdLCBbMzcuNTAzNTgyLCAzMC4wMDM3NzZdLCBbMzYuNzQwNTI4LCAyOS44NjUyODNdLCBbMzYuNTAxMjE0LCAyOS41MDUyNTRdLCBbMzYuMDY4OTQxLCAyOS4xOTc0OTVdLCBbMzQuOTU2MDM3LCAyOS4zNTY1NTVdLCBbMzQuOTIyNjAzLCAyOS41MDEzMjZdLCBbMzUuNDIwOTE4LCAzMS4xMDAwNjZdLCBbMzUuMzk3NTYxLCAzMS40ODkwODZdLCBbMzUuNTQ1MjUyLCAzMS43ODI1MDVdLCBbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpPUiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSm9yZGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XSwgWzEzNC43NjYzNzksIDMzLjgwNjMzNV0sIFsxMzQuMjAzNDE2LCAzMy4yMDExNzhdLCBbMTMzLjc5Mjk1LCAzMy41MjE5ODVdLCBbMTMzLjI4MDI2OCwgMzMuMjg5NTddLCBbMTMzLjAxNDg1OCwgMzIuNzA0NTY3XSwgWzEzMi4zNjMxMTUsIDMyLjk4OTM4Ml0sIFsxMzIuMzcxMTc2LCAzMy40NjM2NDJdLCBbMTMyLjkyNDM3MywgMzQuMDYwMjk5XSwgWzEzMy40OTI5NjgsIDMzLjk0NDYyMV0sIFsxMzMuOTA0MTA2LCAzNC4zNjQ5MzFdLCBbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XV1dLCBbW1sxNDAuOTc2Mzg4LCAzNy4xNDIwNzRdLCBbMTQwLjU5OTc3LCAzNi4zNDM5ODNdLCBbMTQwLjc3NDA3NCwgMzUuODQyODc3XSwgWzE0MC4yNTMyNzksIDM1LjEzODExNF0sIFsxMzguOTc1NTI4LCAzNC42Njc2XSwgWzEzNy4yMTc1OTksIDM0LjYwNjI4Nl0sIFsxMzUuNzkyOTgzLCAzMy40NjQ4MDVdLCBbMTM1LjEyMDk4MywgMzMuODQ5MDcxXSwgWzEzNS4wNzk0MzUsIDM0LjU5NjU0NV0sIFsxMzMuMzQwMzE2LCAzNC4zNzU5MzhdLCBbMTMyLjE1Njc3MSwgMzMuOTA0OTMzXSwgWzEzMC45ODYxNDUsIDMzLjg4NTc2MV0sIFsxMzIuMDAwMDM2LCAzMy4xNDk5OTJdLCBbMTMxLjMzMjc5LCAzMS40NTAzNTVdLCBbMTMwLjY4NjMxOCwgMzEuMDI5NTc5XSwgWzEzMC4yMDI0MiwgMzEuNDE4MjM4XSwgWzEzMC40NDc2NzYsIDMyLjMxOTQ3NV0sIFsxMjkuODE0NjkyLCAzMi42MTAzMV0sIFsxMjkuNDA4NDYzLCAzMy4yOTYwNTZdLCBbMTMwLjM1MzkzNSwgMzMuNjA0MTUxXSwgWzEzMC44Nzg0NTEsIDM0LjIzMjc0M10sIFsxMzEuODg0MjI5LCAzNC43NDk3MTRdLCBbMTMyLjYxNzY3MywgMzUuNDMzMzkzXSwgWzEzNC42MDgzMDEsIDM1LjczMTYxOF0sIFsxMzUuNjc3NTM4LCAzNS41MjcxMzRdLCBbMTM2LjcyMzgzMSwgMzcuMzA0OTg0XSwgWzEzNy4zOTA2MTIsIDM2LjgyNzM5MV0sIFsxMzguODU3NjAyLCAzNy44Mjc0ODVdLCBbMTM5LjQyNjQwNSwgMzguMjE1OTYyXSwgWzE0MC4wNTQ3OSwgMzkuNDM4ODA3XSwgWzEzOS44ODMzNzksIDQwLjU2MzMxMl0sIFsxNDAuMzA1NzgzLCA0MS4xOTUwMDVdLCBbMTQxLjM2ODk3MywgNDEuMzc4NTZdLCBbMTQxLjkxNDI2MywgMzkuOTkxNjE2XSwgWzE0MS44ODQ2MDEsIDM5LjE4MDg2NV0sIFsxNDAuOTU5NDg5LCAzOC4xNzQwMDFdLCBbMTQwLjk3NjM4OCwgMzcuMTQyMDc0XV1dLCBbW1sxNDMuOTEwMTYyLCA0NC4xNzQxXSwgWzE0NC42MTM0MjcsIDQzLjk2MDg4M10sIFsxNDUuMzIwODI1LCA0NC4zODQ3MzNdLCBbMTQ1LjU0MzEzNywgNDMuMjYyMDg4XSwgWzE0NC4wNTk2NjIsIDQyLjk4ODM1OF0sIFsxNDMuMTgzODUsIDQxLjk5NTIxNV0sIFsxNDEuNjExNDkxLCA0Mi42Nzg3OTFdLCBbMTQxLjA2NzI4NiwgNDEuNTg0NTk0XSwgWzEzOS45NTUxMDYsIDQxLjU2OTU1Nl0sIFsxMzkuODE3NTQ0LCA0Mi41NjM3NTldLCBbMTQwLjMxMjA4NywgNDMuMzMzMjczXSwgWzE0MS4zODA1NDksIDQzLjM4ODgyNV0sIFsxNDEuNjcxOTUyLCA0NC43NzIxMjVdLCBbMTQxLjk2NzY0NSwgNDUuNTUxNDgzXSwgWzE0My4xNDI4NywgNDQuNTEwMzU4XSwgWzE0My45MTAxNjIsIDQ0LjE3NDFdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkpQTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFwYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcwLjM4ODk2NSwgNDIuMDgxMzA4XSwgWzY5LjA3MDAyNywgNDEuMzg0MjQ0XSwgWzY4LjYzMjQ4MywgNDAuNjY4NjgxXSwgWzY4LjI1OTg5NiwgNDAuNjYyMzI1XSwgWzY3Ljk4NTg1NiwgNDEuMTM1OTkxXSwgWzY2LjcxNDA0NywgNDEuMTY4NDQ0XSwgWzY2LjUxMDY0OSwgNDEuOTg3NjQ0XSwgWzY2LjAyMzM5MiwgNDEuOTk0NjQ2XSwgWzY2LjA5ODAxMiwgNDIuOTk3NjZdLCBbNjQuOTAwODI0LCA0My43MjgwODFdLCBbNjMuMTg1Nzg3LCA0My42NTAwNzVdLCBbNjIuMDEzMywgNDMuNTA0NDc3XSwgWzYxLjA1ODMyLCA0NC40MDU4MTddLCBbNjAuMjM5OTcyLCA0NC43ODQwMzddLCBbNTguNjg5OTg5LCA0NS41MDAwMTRdLCBbNTguNTAzMTI3LCA0NS41ODY4MDRdLCBbNTUuOTI4OTE3LCA0NC45OTU4NThdLCBbNTUuOTY4MTkxLCA0MS4zMDg2NDJdLCBbNTUuNDU1MjUxLCA0MS4yNTk4NTldLCBbNTQuNzU1MzQ1LCA0Mi4wNDM5NzFdLCBbNTQuMDc5NDE4LCA0Mi4zMjQxMDldLCBbNTIuOTQ0MjkzLCA0Mi4xMTYwMzRdLCBbNTIuNTAyNDYsIDQxLjc4MzMxNl0sIFs1Mi40NDYzMzksIDQyLjAyNzE1MV0sIFs1Mi42OTIxMTIsIDQyLjQ0Mzg5NV0sIFs1Mi41MDE0MjYsIDQyLjc5MjI5OF0sIFs1MS4zNDI0MjcsIDQzLjEzMjk3NV0sIFs1MC44OTEyOTIsIDQ0LjAzMTAzNF0sIFs1MC4zMzkxMjksIDQ0LjI4NDAxNl0sIFs1MC4zMDU2NDMsIDQ0LjYwOTgzNl0sIFs1MS4yNzg1MDMsIDQ0LjUxNDg1NF0sIFs1MS4zMTY4OTksIDQ1LjI0NTk5OF0sIFs1Mi4xNjczOSwgNDUuNDA4MzkxXSwgWzUzLjA0MDg3NiwgNDUuMjU5MDQ3XSwgWzUzLjIyMDg2NiwgNDYuMjM0NjQ2XSwgWzUzLjA0MjczNywgNDYuODUzMDA2XSwgWzUyLjA0MjAyMywgNDYuODA0NjM3XSwgWzUxLjE5MTk0NSwgNDcuMDQ4NzA1XSwgWzUwLjAzNDA4MywgNDYuNjA4OTldLCBbNDkuMTAxMTYsIDQ2LjM5OTMzXSwgWzQ4LjU5MzI0MSwgNDYuNTYxMDM0XSwgWzQ4LjY5NDczNCwgNDcuMDc1NjI4XSwgWzQ4LjA1NzI1MywgNDcuNzQzNzUzXSwgWzQ3LjMxNTIzMSwgNDcuNzE1ODQ3XSwgWzQ2LjQ2NjQ0NiwgNDguMzk0MTUyXSwgWzQ3LjA0MzY3MiwgNDkuMTUyMDM5XSwgWzQ2Ljc1MTU5NiwgNDkuMzU2MDA2XSwgWzQ3LjU0OTQ4LCA1MC40NTQ2OThdLCBbNDguNTc3ODQxLCA0OS44NzQ3Nl0sIFs0OC43MDIzODIsIDUwLjYwNTEyOF0sIFs1MC43NjY2NDgsIDUxLjY5Mjc2Ml0sIFs1Mi4zMjg3MjQsIDUxLjcxODY1Ml0sIFs1NC41MzI4NzgsIDUxLjAyNjI0XSwgWzU1LjcxNjk0MSwgNTAuNjIxNzE3XSwgWzU2Ljc3Nzk2MSwgNTEuMDQzNTUxXSwgWzU4LjM2MzI5MSwgNTEuMDYzNjUzXSwgWzU5LjY0MjI4MiwgNTAuNTQ1NDQyXSwgWzU5LjkzMjgwNywgNTAuODQyMTk0XSwgWzYxLjMzNzQyNCwgNTAuNzk5MDddLCBbNjEuNTg4MDAzLCA1MS4yNzI2NTldLCBbNTkuOTY3NTM0LCA1MS45NjA0Ml0sIFs2MC45MjcyNjksIDUyLjQ0NzU0OF0sIFs2MC43Mzk5OTMsIDUyLjcxOTk4Nl0sIFs2MS42OTk5ODYsIDUyLjk3OTk5Nl0sIFs2MC45NzgwNjYsIDUzLjY2NDk5M10sIFs2MS40MzY1OTEsIDU0LjAwNjI2NV0sIFs2NS4xNzg1MzQsIDU0LjM1NDIyOF0sIFs2NS42NjY4NzYsIDU0LjYwMTI2N10sIFs2OC4xNjkxLCA1NC45NzAzOTJdLCBbNjkuMDY4MTY3LCA1NS4zODUyNV0sIFs3MC44NjUyNjcsIDU1LjE2OTczNF0sIFs3MS4xODAxMzEsIDU0LjEzMzI4NV0sIFs3Mi4yMjQxNSwgNTQuMzc2NjU1XSwgWzczLjUwODUxNiwgNTQuMDM1NjE3XSwgWzczLjQyNTY3OSwgNTMuNDg5ODFdLCBbNzQuMzg0ODQ1LCA1My41NDY4NjFdLCBbNzYuODkxMSwgNTQuNDkwNTI0XSwgWzc2LjUyNTE3OSwgNTQuMTc3MDAzXSwgWzc3LjgwMDkxNiwgNTMuNDA0NDE1XSwgWzgwLjAzNTU2LCA1MC44NjQ3NTFdLCBbODAuNTY4NDQ3LCA1MS4zODgzMzZdLCBbODEuOTQ1OTg2LCA1MC44MTIxOTZdLCBbODMuMzgzMDA0LCA1MS4wNjkxODNdLCBbODMuOTM1MTE1LCA1MC44ODkyNDZdLCBbODQuNDE2Mzc3LCA1MC4zMTE0XSwgWzg1LjExNTU2LCA1MC4xMTczMDNdLCBbODUuNTQxMjcsIDQ5LjY5Mjg1OV0sIFs4Ni44MjkzNTcsIDQ5LjgyNjY3NV0sIFs4Ny4zNTk5NywgNDkuMjE0OTgxXSwgWzg2LjU5ODc3NiwgNDguNTQ5MTgyXSwgWzg1Ljc2ODIzMywgNDguNDU1NzUxXSwgWzg1LjcyMDQ4NCwgNDcuNDUyOTY5XSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODMuMTgwNDg0LCA0Ny4zMzAwMzFdLCBbODIuNDU4OTI2LCA0NS41Mzk2NV0sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs4MC4xODAxNSwgNDIuOTIwMDY4XSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbNzkuNjQzNjQ1LCA0Mi40OTY2ODNdLCBbNzkuMTQyMTc3LCA0Mi44NTYwOTJdLCBbNzcuNjU4MzkyLCA0Mi45NjA2ODZdLCBbNzYuMDAwMzU0LCA0Mi45ODgwMjJdLCBbNzUuNjM2OTY1LCA0Mi44Nzc5XSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcwLjk2MjMxNSwgNDIuMjY2MTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLQVoiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkthemFraHN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQwLjk5MywgLTAuODU4MjldLCBbNDEuNTg1MTMsIC0xLjY4MzI1XSwgWzQwLjg4NDc3LCAtMi4wODI1NV0sIFs0MC42Mzc4NSwgLTIuNDk5NzldLCBbNDAuMjYzMDQsIC0yLjU3MzA5XSwgWzQwLjEyMTE5LCAtMy4yNzc2OF0sIFszOS44MDAwNiwgLTMuNjgxMTZdLCBbMzkuNjA0ODksIC00LjM0NjUzXSwgWzM5LjIwMjIyLCAtNC42NzY3N10sIFszNy43NjY5LCAtMy42NzcxMl0sIFszNy42OTg2OSwgLTMuMDk2OTldLCBbMzQuMDcyNjIsIC0xLjA1OTgyXSwgWzMzLjkwMzcxMSwgLTAuOTVdLCBbMzMuODkzNTY5LCAwLjEwOTgxNF0sIFszNC4xOCwgMC41MTVdLCBbMzQuNjcyMSwgMS4xNzY5NF0sIFszNS4wMzU5OSwgMS45MDU4NF0sIFszNC41OTYwNywgMy4wNTM3NF0sIFszNC40NzkxMywgMy41NTU2XSwgWzM0LjAwNSwgNC4yNDk4ODVdLCBbMzQuNjIwMTk2LCA0Ljg0NzEyM10sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM1LjgxNzQ0OCwgNS4zMzgyMzJdLCBbMzUuODE3NDQ4LCA0Ljc3Njk2Nl0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM2Ljg1NTA5MywgNC40NDc4NjRdLCBbMzguMTIwOTE1LCAzLjU5ODYwNV0sIFszOC40MzY5NywgMy41ODg1MV0sIFszOC42NzExNCwgMy42MTYwN10sIFszOC44OTI1MSwgMy41MDA3NF0sIFszOS41NTkzODQsIDMuNDIyMDZdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbNDEuMTcxOCwgMy45MTkwOV0sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQwLjk4MTA1LCAyLjc4NDUyXSwgWzQwLjk5MywgLTAuODU4MjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS2VueWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzc1LjYzNjk2NSwgNDIuODc3OV0sIFs3Ni4wMDAzNTQsIDQyLjk4ODAyMl0sIFs3Ny42NTgzOTIsIDQyLjk2MDY4Nl0sIFs3OS4xNDIxNzcsIDQyLjg1NjA5Ml0sIFs3OS42NDM2NDUsIDQyLjQ5NjY4M10sIFs4MC4yNTk5OSwgNDIuMzQ5OTk5XSwgWzgwLjExOTQzLCA0Mi4xMjM5NDFdLCBbNzguNTQzNjYxLCA0MS41ODIyNDNdLCBbNzguMTg3MTk3LCA0MS4xODUzMTZdLCBbNzYuOTA0NDg0LCA0MS4wNjY0ODZdLCBbNzYuNTI2MzY4LCA0MC40Mjc5NDZdLCBbNzUuNDY3ODI4LCA0MC41NjIwNzJdLCBbNzQuNzc2ODYyLCA0MC4zNjY0MjVdLCBbNzMuODIyMjQ0LCAzOS44OTM5NzNdLCBbNzMuOTYwMDEzLCAzOS42NjAwMDhdLCBbNzMuNjc1Mzc5LCAzOS40MzEyMzddLCBbNzEuNzg0Njk0LCAzOS4yNzk0NjNdLCBbNzAuNTQ5MTYyLCAzOS42MDQxOThdLCBbNjkuNDY0ODg3LCAzOS41MjY2ODNdLCBbNjkuNTU5NjEsIDQwLjEwMzIxMV0sIFs3MC42NDgwMTksIDM5LjkzNTc1NF0sIFs3MS4wMTQxOTgsIDQwLjI0NDM2Nl0sIFs3MS43NzQ4NzUsIDQwLjE0NTg0NF0sIFs3My4wNTU0MTcsIDQwLjg2NjAzM10sIFs3MS44NzAxMTUsIDQxLjM5MjldLCBbNzEuMTU3ODU5LCA0MS4xNDM1ODddLCBbNzAuNDIwMDIyLCA0MS41MTk5OThdLCBbNzEuMjU5MjQ4LCA0Mi4xNjc3MTFdLCBbNzAuOTYyMzE1LCA0Mi4yNjYxNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktHWiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS3lyZ3l6c3RhbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTAzLjQ5NzI4LCAxMC42MzI1NTVdLCBbMTAzLjA5MDY5LCAxMS4xNTM2NjFdLCBbMTAyLjU4NDkzMiwgMTIuMTg2NTk1XSwgWzEwMi4zNDgwOTksIDEzLjM5NDI0N10sIFsxMDIuOTg4NDIyLCAxNC4yMjU3MjFdLCBbMTA0LjI4MTQxOCwgMTQuNDE2NzQzXSwgWzEwNS4yMTg3NzcsIDE0LjI3MzIxMl0sIFsxMDYuMDQzOTQ2LCAxMy44ODEwOTFdLCBbMTA2LjQ5NjM3MywgMTQuNTcwNTg0XSwgWzEwNy4zODI3MjcsIDE0LjIwMjQ0MV0sIFsxMDcuNjE0NTQ4LCAxMy41MzU1MzFdLCBbMTA3LjQ5MTQwMywgMTIuMzM3MjA2XSwgWzEwNS44MTA1MjQsIDExLjU2NzYxNV0sIFsxMDYuMjQ5NjcsIDEwLjk2MTgxMl0sIFsxMDUuMTk5OTE1LCAxMC44ODkzMV0sIFsxMDQuMzM0MzM1LCAxMC40ODY1NDRdLCBbMTAzLjQ5NzI4LCAxMC42MzI1NTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktITSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ2FtYm9kaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEyOC4zNDk3MTYsIDM4LjYxMjI0M10sIFsxMjkuMjEyOTIsIDM3LjQzMjM5Ml0sIFsxMjkuNDYwNDUsIDM2Ljc4NDE4OV0sIFsxMjkuNDY4MzA0LCAzNS42MzIxNDFdLCBbMTI5LjA5MTM3NywgMzUuMDgyNDg0XSwgWzEyOC4xODU4NSwgMzQuODkwMzc3XSwgWzEyNy4zODY1MTksIDM0LjQ3NTY3NF0sIFsxMjYuNDg1NzQ4LCAzNC4zOTAwNDZdLCBbMTI2LjM3MzkyLCAzNC45MzQ1Nl0sIFsxMjYuNTU5MjMxLCAzNS42ODQ1NDFdLCBbMTI2LjExNzM5OCwgMzYuNzI1NDg1XSwgWzEyNi44NjAxNDMsIDM2Ljg5MzkyNF0sIFsxMjYuMTc0NzU5LCAzNy43NDk2ODZdLCBbMTI2LjIzNzMzOSwgMzcuODQwMzc4XSwgWzEyNi42ODM3MiwgMzcuODA0NzczXSwgWzEyNy4wNzMzMDksIDM4LjI1NjExNV0sIFsxMjcuNzgwMDM1LCAzOC4zMDQ1MzZdL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment